用于从表中获取记录的 SQL 查询需要很长时间,但是当我运行 exec sp_updatestats 时按预期工作
Posted
技术标签:
【中文标题】用于从表中获取记录的 SQL 查询需要很长时间,但是当我运行 exec sp_updatestats 时按预期工作【英文标题】:SQL query for fetching record from a table it's taking a long time but works as expected when i run exec sp_updatestats 【发布时间】:2020-01-29 10:35:20 【问题描述】:我在 SQL Server 2014 中有一个表,其中有大约 3 lk 数据,每天的事务是 3k。
我编写了一个查询,通过应用具有 4 列的过滤器从另一个具有非集群索引的表中获取数据。它按预期工作了 7-10 天,突然需要很长时间才能检索数据。
在这种情况下,如果我触发 exec sp_updatestats
,它将按预期响应。
现在我的问题是:
如果我运行exec sp_updatestats
,它会影响我在数据库中正在进行的现有事务吗?
使用这个exec sp_updatestats
有什么缺点?
exec sp_updatestats
有什么替代品吗?
【问题讨论】:
【参考方案1】:广告 1. 您的交易(严格意义上)将继续进行。更新统计信息可能(并且通常会)导致重新编译。
广告 2. 它更新所有统计信息(由 SQL Server 自动创建)。因此,由于重新编译,它可以影响任何查询的下一次运行
Ad 3. 在您的情况下,为您的表运行 UPDATE STATISTICS 可能就足够了。您也可以考虑在非工作时间运行它,例如每天晚上。
【讨论】:
以上是关于用于从表中获取记录的 SQL 查询需要很长时间,但是当我运行 exec sp_updatestats 时按预期工作的主要内容,如果未能解决你的问题,请参考以下文章