查询性能优化 in and union
环境:sql server 2005
表B两个字段id(int),name(varchar(10)),在字段id上建立了索引,数据量100万,随即生成的数据。
话题比较查询条件中的in与or性能的比较,比较下面两种语句的性能。
A、select * from a where a.id in (1,2)
B、select * from a where a.id =1 union select * from a where a.id =2
从网上的资料看,推荐使用第二种方法B。
从执行计划中可以看出语句A的开销占25%,语句B的开销占75%。
语句A对表进行了一次扫描,查找方式索引查找与rid查找。
语句B对表扫描过2次,在每一次扫描中查找方式索引查找与rid查找。
我得出的结论是在这种条件下in的性能要高于or。
实际分析计划如下:
表B两个字段id(int),name(varchar(10)),在字段id上建立了索引,数据量100万,随即生成的数据。
话题比较查询条件中的in与or性能的比较,比较下面两种语句的性能。
A、select * from a where a.id in (1,2)
B、select * from a where a.id =1 union select * from a where a.id =2
从网上的资料看,推荐使用第二种方法B。
从执行计划中可以看出语句A的开销占25%,语句B的开销占75%。
语句A对表进行了一次扫描,查找方式索引查找与rid查找。
语句B对表扫描过2次,在每一次扫描中查找方式索引查找与rid查找。
我得出的结论是在这种条件下in的性能要高于or。
实际分析计划如下:
posted on 2009-08-20 13:52 lucika.zh 阅读(1247) 评论(5) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步