加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – 什么是数据库统计信息,我如何从中受益?

发布时间:2020-12-24 13:40:24 所属栏目:MsSql教程 来源:网络整理
导读:我听说过SQL Server默认保留的统计信息.它们跟踪的是什么,我如何使用这些信息来改进我的数据库? 解决方法 统计信息只是一种动态元数据形式,可帮助查询优化器做出更好的决策.例如,如果表中只有十几行,那么就没有必要去索引进行查找;进行全表扫描总是会更好

我听说过SQL Server默认保留的统计信息.它们跟踪的是什么,我如何使用这些信息来改进我的数据库?

解决方法

统计信息只是一种动态元数据形式,可帮助查询优化器做出更好的决策.例如,如果表中只有十几行,那么就没有必要去索引进行查找;进行全表扫描总是会更好.但是如果同一个表增长到一百万行,那么使用索引可能会更好.但是如果你在一个只有极少数唯一值的列上查询该表(例如它可能是一个只包含“M”或“F”的“性别”列),那么实际上FTS可能会更好,因为你会无论如何都需要检索块来构建结果集.现在说你的表是99%“M”而只有1%“F”,我们应该在一个案例中使用FTS或在另一个案例中使用索引.相同的表,相同的查询,可能有四种不同的查询计划,具体取决于表的内容.这些类型的东西是“统计”,它们是每个数据库的个体 – 即使两个具有相同表和索引结构的数据库也会有不同的统计数据.

总之,在现代数据库引擎中,有两种查询优化:重写SQL(基于规则的优化,如编译器重写C以提高效率)和选择正确的数据路径(基于成本的优化),就像JIT编译器在运行时识别热点一样).如果你发现查询优化器做了明显错误的事情(例如,当你知道索引会更好时选择FTS),你只需要担心这个问题.

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读