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

去掉left join,反而慢了!该怎么处理

2012-02-14 
去掉left join,反而慢了!select *from t1 inner join t2on ...inner join t3 on ...left join fn() on ...

去掉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的成本,呵呵,具体看执行计划了,只是经验猜测

热点排行