日期:2014-05-17  浏览次数:20694 次

union效率问题
有个SQL视图为
select a1,a2 from a
union
select b1,b2 from b 
union
select c1,c2 from c 
union
select d1,d2 from d


记录才两万多都要了11秒,怎么能提高效率速度



 

------解决方案--------------------
1、没有where,速度会受影响
2、如果没必要的话,把union改成union all
------解决方案--------------------
你单独查询四个表需要的多少时间?union 会过滤掉重复的记录
你可以尝试把union改为union all,时间是否会少一些?

------解决方案--------------------
四个表是否都有索引?
------解决方案--------------------
可以考虑换个思路:
每个语句后面跟上where  最后union all连接效率高
------解决方案--------------------
估计唯一有用的办法就是索引视图了,没有where,你那个必然是聚集索引扫描
------解决方案--------------------
1.把union 改成union all
2.在这视图上加索引

------解决方案--------------------
是每个查询都搞成一个索引视图,然后之间union