SQL Server 2005 排序order by对查询性能的影响(2)
上次我们发现在建立了索引时,分页排序还是很慢。
慢的语句:


上面说到如果取的top(10*10) 使用索引,这时很快,换成了top(10*(10000-1))就是表扫描啊,
原来:这时SQL server 2005优化器评估索引时,发现从文件去找99990行数据时,这时很可能这id数据分散在每个数据页中,
从索引查数据效率比表扫描要低,这时优化器就使用表扫描。
这时如何优化和解决:方法如下
1,建立(workflowid,id)的复合索引
2,将id设置为聚集索引
注意:
在排序上建立索引,可以提高性能,但这主要取决于数据库索引效率评估
总结:
1,排序中要避免先“表扫描”后“排序”的情况
2,避免在查询中取出大量数据在排序的情况,这时要对sql语句的“过滤条件”做严格限制,减少数据行数
3,排序最后做到涵盖索引
【推荐】国内首个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工具