用 UNION 代替 OR 提高查询效率

作者:vkvi 来源:ITPOW(原创) 日期:2007-5-29

建立了索引,不代表查询语句的速度会提高,除了正确建立索引外,还需要高效的 SQL 语句。

我们知道 OR 会影响索引的性能,大多数情况下我们可以使用 UNION 来代替,UNION 是将两个查询结果合并在一起,合并在一起的结果也同样支持排序等操作。

使用 IN 的语句

select * from tblmsgs where msgid=1111 or msgid=2222 order by msgid desc

使用 UNION 的语句

select * from tblmsgs where msgid=1111 union select * from tblmsgs where msgid=2222 order by msgid desc

msgid 为聚集索引,两个语句的查询结果相同,但是通过 SQL Server 的查询分析器的执行计划(菜单->查询->显示执行计划)和统计(菜单->查询->显示客户统计),我们均可以看到不论是在计划还是实际统计中,使用 UNION 的性能都非常的优越。

相关文章