去掉left join,反而慢了!
select *
from t1 inner join t2 on ...
inner join t3 on ...
left join fn() on ...
后来觉得fn()没有作用,去掉left join ,
发现查询速度慢了好几倍,加上后反而快得多!
怎么可能呢?
[解决办法]
看一下执行计划,是不是去掉后,就不使用某个索引了。
[解决办法]
select *
from t1 inner join t2 on ...
inner join t3 on ...
left join fn() on ...
比
select *
from t1 inner join t2 on ...
inner join t3 on ...
这个快?
这是不可能的。
[解决办法]
也有这个可能:left join fn()... 之后限制了很多行集,SQL显示处理过程快一些,所以总体感觉快了。
[解决办法]
查看下执行计划,看慢在了哪一步
[解决办法]
但因为是 left join 所以应该不会是这种情况啊
[解决办法]
会不会是搞了视图索引啊?
[解决办法]
恩,觉得小楼说 的有道理,
可能之前要操作100行,加leftjoin后,只操作10行了,
感觉速度反而快了
[解决办法]
on 操作是在数据出来后再做率选 .肯定是索引的原因
[解决办法]
筛选了走嵌套循环了吧,导致执行的成本小于你hash的成本,呵呵,具体看执行计划了,只是经验猜测