理解统计信息(6/6):统计信息汇总贴
在帮助优化器选择正确的执行计划,统计信息是一个重要因素。因此,我们在处理性能问题时,要足够重视统计信息。可能是对统计信息知识及其相关机制的缺乏,忽略统计信息往往是造成性能问题的根源。
查询优化器在每一步使用统计信息判断返回的行数。在执行计划里的预估行数信息是基于列上的可用统计信息计算而来的。统计信息会给我们列上数据分布信息。没有统计信息,查询优化器不能判断不同计划的效率。通过使用统计信息里的内容,查询优化器在访问数据的时候就可以做出正确选择。
在SQL Server里存储的统计信息包括密度和直方图:
- 密度向量:密度是给出列(或一组列)里唯一值的比率。理解统计信息(1/6):密度向量
- 直方图:直方图是统计信息里第一列的数据分布详情。理解统计信息(2/6):直方图
有2类统计信息,索引统计信息和列统计信息。在表上定义索引时,索引统计信息会自动创建。列统计信息总是在单列,当在查询里列被引用时,列统计信息会自动创建。为了自动创建列统计信息,在数据库属性里可以将自动创建统计信息设置为启用。在理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用里我们详细讨论了统计信息是如何创建的,自动更新和创建统计信息是如何工作的,过期的统计信息如何影响我们的性能。
在表里发生合理的变化后,SQL Server会自动更新统计信息。这里有个阀限值来触发自动更新统计信息。默认的阀值对最优性能是否足够好?我们真的需要通过人为更新统计信息来干预自动更新统计信息么?看看理解统计信息(4/6):自动更新统计信息的阀值——人为更新统计信息的重要性就知道答案了。
在SQL Server 2005和SQL Server 2008里,辨别统计信息是否需要人为更新是个很困难的事,理解统计信息(5/6):如何检测过期的统计信息可以给你一些如何开始的想法。
额外赠送统计信息内幕:直方图和密度向量。
注:此文章为WoodyTu学习MS SQL技术,收集整理相关文档撰写,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?