首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql语句or与union all的执行效率哪个更高解决思路

2012-06-04 
sql语句or与union all的执行效率哪个更高如题第一种写法:with pagelist as (select * from table where ta

sql语句or与union all的执行效率哪个更高
如题 
第一种写法:
with pagelist as (
 select * from table where table_column=1
 union all 
 select * from table where table_column=2
)
select * from pagelist

第二种写法:
with pagelist as (
 select * from table where table_column=1 or table_column=2
)
select * from pagelist 


请教下,以上两种写法,哪个效率更高些,为什么?

[解决办法]
这么写比较好,

SQL code
 select * from table where table_column in(1,2)
[解决办法]
如果一定要选,我选union all

[解决办法]
为什么是union all,我觉得是or,毕竟这里面不用连接
[解决办法]
union all
[解决办法]
探讨

我创建了一个测试表table,插入两千多万条数据,字段column_name上创建的是非聚集索引。
两种方法对比测试,发现第一种2min可查出结果,而第二种需要3min才能查出结果。为什么会是这样?

[解决办法]
所以说选择union all是没错D,不过还是建议用1楼的写法.
[解决办法]
ctrl + L
[解决办法]
长知识了!
[解决办法]
or不走索引了,UNION ALL每次单独查询可以走索引,UNION ALL好一点。但是从时间上来看需要看数据量,数据量大的话检索出来的数据小,肯定是UNION ALL效率高。

热点排行