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

cqd0820 2012-05-07 05:43:07
如题
第一种写法:
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


请教下,以上两种写法,哪个效率更高些,为什么?
...全文
1451 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Thanks for your sharing
孤独加百列 2012-05-08
  • 打赏
  • 举报
回复
or不走索引了,UNION ALL每次单独查询可以走索引,UNION ALL好一点。但是从时间上来看需要看数据量,数据量大的话检索出来的数据小,肯定是UNION ALL效率高。
暖暖2021 2012-05-08
  • 打赏
  • 举报
回复
长知识了!
koumingjie 2012-05-08
  • 打赏
  • 举报
回复
ctrl + L
唐诗三百首 2012-05-07
  • 打赏
  • 举报
回复
所以说选择union all是没错D,不过还是建议用1楼的写法.
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

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

查看执行计划就明白了
cqd0820 2012-05-07
  • 打赏
  • 举报
回复
我创建了一个测试表table,插入两千多万条数据,字段column_name上创建的是非聚集索引。
两种方法对比测试,发现第一种2min可查出结果,而第二种需要3min才能查出结果。为什么会是这样?
cqd0820 2012-05-07
  • 打赏
  • 举报
回复
union all的查询速度一定比or快吗?
-狙击手- 2012-05-07
  • 打赏
  • 举报
回复
union all
zhangweitc123 2012-05-07
  • 打赏
  • 举报
回复
为什么是union all,我觉得是or,毕竟这里面不用连接
唐诗三百首 2012-05-07
  • 打赏
  • 举报
回复
如果一定要选,我选union all
唐诗三百首 2012-05-07
  • 打赏
  • 举报
回复
这么写比较好,

select * from table where table_column in(1,2)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧