关于 union的效率

w000111 2011-05-24 03:13:08
N张表联合查询

把查询条件放在最后还是把条件放在每一个表尾,两种情况那个效率高,还是一样的。,

1 : select * from (select * from table1
union all
select * from table1) where id=123

2: select * from table1 where id=123
union all
select * from table1 where id=123
...全文
751 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbren 2011-08-25
  • 打赏
  • 举报
回复
如果 id 上建了索引,第二种快n倍
FlySQL 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 w000111 的回复:]
测试过了,第二种效率高出第一种N倍,联合是多个不一样的表合起来查询,和in两码事情,比如查询所有表单,就要每个表单的表联合一下了,这个时候就需要考虑吧条件放在哪里的问题了
[/Quote]

应该是第二种的效果高,但提醒一下,测试每段脚本前需要清了缓存来做,否则执行的先后顺序,结果是有影响的
w000111 2011-06-03
  • 打赏
  • 举报
回复
测试过了,第二种效率高出第一种N倍,联合是多个不一样的表合起来查询,和in两码事情,比如查询所有表单,就要每个表单的表联合一下了,这个时候就需要考虑吧条件放在哪里的问题了
duoxu1983 2011-06-03
  • 打赏
  • 举报
回复
效率是一样的。
rfq 2011-06-03
  • 打赏
  • 举报
回复

一次我用 union 连接几个小表的查询结果 竟然有超时的错误,不知道为什么在客户的服务器上

表都非常小 大家说说可能的原因

君_洛洛 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 w000111 的回复:]
测试过了,第二种效率高出第一种N倍,联合是多个不一样的表合起来查询,和in两码事情,比如查询所有表单,就要每个表单的表联合一下了,这个时候就需要考虑吧条件放在哪里的问题了
[/Quote]
你的表名都是table1?????效率会N倍????楼主给出计划??
除非你表不一样可能会出现??
打一壶酱油 2011-05-24
  • 打赏
  • 举报
回复
效率是一样的, 查询优化器 会生成相同的 执行计划
叶子 2011-05-24
  • 打赏
  • 举报
回复
看执行计划

貌似第二个效率好一点。
--小F-- 2011-05-24
  • 打赏
  • 举报
回复
查看执行计划才能得出结论
这个还与数据量的大小有关
rucypli 2011-05-24
  • 打赏
  • 举报
回复
看执行计划
禁用F3 2011-05-24
  • 打赏
  • 举报
回复
我很少用union,觉得他不方便.还是左右in方便些
dearbinge 2011-05-24
  • 打赏
  • 举报
回复
貌似第二种
快溜 2011-05-24
  • 打赏
  • 举报
回复
貌似第二种好吧,union的效率很差,当然union的越少越好。
jhone99 2011-05-24
  • 打赏
  • 举报
回复
效率高低试一下不就知道了

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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