我有 2 个查询花费了太长时间,在 Azure 网站内运行它们时超时。
第一。
SELECT Value FROM SEN.ValueTable WHERE OptId = @optId
二维
INSERT INTO SEN.ValueTable (Value, OptId)
SELECT Value, OptId FROM REF.ValueTable WHERE OptId = @optId
两个 SELECT 将始终返回 7860 个值。问题是我使用不同的 @optId 执行了大约 10 个这样的查询。首先,我在没有任何索引的情况下运行,然后第一个查询会时不时地超时。然后我向 SEN.ValueTable 添加了一个非聚集索引,然后 2d 查询开始超时。
来自 Azure VM 的第一个查询
来自 Azure-WebApp 的 2d 查询
我尝试通过.config文件增加超时时间,但它们仍然在30秒内超时(客户没有时间限制,从sql数据库检索数据不会很慢无论如何,应用程序的事情)。
有什么办法可以加快速度/消除超时吗?索引 REF.ValueTable 会加快插入速度吗?
最佳答案
首先,显而易见的解决方案是向 SEN.ValueTable(OptId, Value)
添加索引,并在 REF.ValueTable(OptId, Value)
上不建立索引。我认为这可以解决您的性能问题。
更重要的是,提取或插入 7,860 行不应该花费 30 秒——不是那样的。那么,还发生了什么? REF.ValueTable()
上是否有触发器可能会减慢速度?还有其他限制吗?柱子特别宽吗?我的意思是,如果 Value
为 VARCHAR(MAX)
并且通常为 100 MB,那么插入值可能会出现问题。
关于sql - 索引 SQL 数据库会减慢插入太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735650/