sql - 索引 SQL 数据库会减慢插入太多

标签 sql sql-server azure azure-sql-database

我有 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() 上是否有触发器可能会减慢速度?还有其他限制吗?柱子特别宽吗?我的意思是,如果 ValueVARCHAR(MAX) 并且通常为 100 MB,那么插入值可能会出现问题。

关于sql - 索引 SQL 数据库会减慢插入太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735650/

相关文章:

sql - 从 Dual 选择 regexp_replace ('aaa_bbb' 、 '(_.)' 、上部 ('\1' ))

mysql - 用于更新/插入的通用 SQL

Git pull Windows Azure 网站

sql - Access/SQL Server 2008 使用 Like 加入不起作用

azure - 如何在 Azure Function App 中配置队列触发器的队列名称

c# - Azure存储1.7 : how to make a simple select that works everytime?

sql - PostgreSQL,在插入之前检查重复项

sql - 来自光标的 Oracle 最后记录

MySQL:@变量与变量。有什么不同?

sql - 数据库触发器比查询慢吗?