2

就查询性能而言,数据库统计信息有多大用处?

我对 SQL Server 2014 查询进行了数据库引擎调优,它说我可以在查询处理方面有 79% 的改进,建议是创建 5 个统计信息和 1 个索引。

在性能方面,在这种情况下,与 1 个索引相比,5 个统计信息在百分比方面如何提高查询性能?

4

2 回答 2

2

统计数据对于查询性能至关重要。没有它们,优化器只是猜测进入数据的路径排列将是最有效的。对每个表的每次访问都不会比表扫描更好。

它们非常重要,以至于 SQL Server 会为即席查询动态创建它们。如果您执行此操作SELECT * FROM MyTable WHERE ThisColumn = 'SomeValue',它将在ThisColumn. 随着表格中的数据被修改,统计数据最终会变得“陈旧”。在这一点上,优化者往往会忽略它们并开始制定非常糟糕的计划。性能一落千丈。过去需要几秒钟的查询现在需要几分钟。

至于这些特定表的这 5 个统计数据 - 我无法说出。测试一下看看。但是请记住,没有免费的午餐。创建和维护统计信息需要 CPU、内存和 IO。它们越多,它们的开销就越大;很像索引。

这是一篇涵盖它的好文章。

于 2014-04-22T04:28:34.617 回答
0

简而言之,统计将创建这些列的值趋势的摘要,而索引实际上将创建一些数据结构(通常是 B-树)以避免在其列中进行所有值扫描。

关于性能,通常您的所有性能都来自索引,并且统计信息只会帮助避免在查询执行的子步骤(执行计划)期间出现错误。

于 2019-01-26T17:26:58.370 回答