SQL Server 2005 强行扫描索引利和弊分析(2)
为何IO数这么多,按理论:最大可能IO次数=表页数+索引页数
我们看看数据库里索引"idx_operator"的统计页数:
查看sql代码:


显示结果:


注意: 索引全部页数=索引根级(1页)+索引中间级页数+索引叶级页数
那么最大IO=5595+19497 =25092次 ,但和42385次也差别很大:多出这么多的IO次数是哪来的啊?
晚上一直对这个不明和郁闷,为何啊。。。。。
网上也没发现是什么原因,后来做了大量的测试和假设?
终于找到一个合理的答案:
结论是:
SQL server在读取IO数据页次,对同一数据页读取多次。
以前一直看SQL server的书籍中就知道:SQL server中读取的最小单位是页(8K),的确当时还没真正领会含义。
因为我们这里有4万多行,所有数据库每读取一行就读取一页。就会有4万多次IO
扩展
通过这个道理我们延伸一下:
如果查询没达到索引覆盖,索引查询的IO次数一定要大于等与其取出的行数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具