索引SQL数据库放慢了插入太多



我有2个查询时间太长了,在Azure网站中运行时会安息。

1st。

SELECT Value FROM SEN.ValueTable WHERE OptId = @optId

2d

INSERT INTO SEN.ValueTable (Value, OptId) 
SELECT Value, OptId FROM REF.ValueTable WHERE OptId = @optId

两个选择将始终返回7860值。问题在于,我用不同的@OptID进行了大约10个查询。首先,我没有任何索引,然后第一个查询将不时超时。然后,我为参议员添加了一个非群集索引,然后2D查询开始超时。

第一个查询来自Azure VM

来自Azure-Webapp的2D查询

我试图通过.config-files增加超时时间,但是它们仍然超时30秒(客户没有时间限制,从SQL数据库中检索数据不会是慢速无论如何,应用程序的内容(。

无论如何是否有速度/摆脱超时?索引ref.Valuetable速度插入任何内容吗?

首先,明显的解决方案是在SEN.ValueTable(OptId, Value)中添加索引,并且在REF.ValueTable(OptId, Value)上没有索引。我认为这会解决您的性能问题。

更重要的是,要获取或插入7,860行应该不需要30秒钟 - 没有这样的行。那么,还有什么事?REF.ValueTable()上是否有触发因素可能正在减慢事物的速度?还有其他限制吗?列特别宽吗?我的意思是,如果ValueVARCHAR(MAX),通常是100 mbytes,则插入值可能是一个问题。

如果您真的运行了这样的查询:

SELECT Value, OptId
FROM REF.ValueTable
WHERE OptId = @optId;

最好的索引是以下内容:

CREATE INDEX idx_ValueTable_OptId_Value
    ON REF.ValueTable (OptId)
    INCLUDE (Value);

任何索引都会减慢插入,但会受益读查询。如果您想要更多详细的答案,请发布更多详细信息 - 表DDL和执行计划。

尝试可重新可在线索引重建 - https://azure.microsoft.com/en-us/blog/resumable-online-inline-inline-inline-rebuild-is-in-public-public-preview-for-azure-squre-sql-db/

最新更新