我有2个查询花了太长时间,在azure网站上运行它们时超时。
第一
INSERT INTO SEN.ValueTable (Value, OptId)
SELECT Value, OptId FROM REF.ValueTable WHERE OptId = @optId
2D
python-twitter
两个SELECTS将始终返回7860个值。问题是我用不同的@optId做了大约10个这样的查询。首先我运行没有任何索引,然后第一个查询将不时地超时。然后我向SEN.ValueTable添加了一个非聚集索引,然后第二个查询开始超时。
来自Azure VM的第一个查询
来自Azure-WebApp的2d查询
我尝试通过.config文件增加超时时间,但是它们仍然在30秒内超时(客户没有时间限制,从sql-database中检索数据不会无论如何,应用程序的速度很慢。)
无论如何加速/消除超时?索引REF.ValueTable的速度会插入任何东西吗?
答案 0 :(得分:2)
如果您真的运行了这样的查询:
SELECT Value, OptId
FROM REF.ValueTable
WHERE OptId = @optId;
最佳指数如下:
CREATE INDEX idx_ValueTable_OptId_Value
ON REF.ValueTable (OptId)
INCLUDE (Value);
任何索引都会降低插入速度,但会使读取查询受益。如果您想要更详细的答案,请发布更多详细信息 - 表格DDL和执行计划。
答案 1 :(得分:2)
首先,显而易见的解决方案是向SEN.ValueTable(OptId, Value)
添加索引并在REF.ValueTable(OptId, Value)
上没有索引。我认为这可以解决您的性能问题。
更重要的是,获取或插入7,860行应该不需要30秒 - 不是那样的。那么,还有什么呢? REF.ValueTable()
上是否有触发器可能会减慢速度?还有其他限制吗?柱子特别宽吗?我的意思是,如果Value
为VARCHAR(MAX)
且通常为100 MB,则插入值可能是个问题。
答案 2 :(得分:0)