日期:2014-05-16  浏览次数:21356 次

sql加了一个条件,反而变慢了?!
我有个sql类似如下:
select * from(
select  a.col2,b.col1。。。 from a,b,c,d,e where a.col1=b.col2 and b.col3=c.col4。。。。。

where a.col2 is not null
order by a.col2,b.col1

内层子查询单独执行瞬间完成,但没有数据。加了外层做进一步筛选,像上面那么写,也是瞬间完成,没有数据。
当我把外层where条件改为a.col2='xxx',sql就要执行5分钟以上,而且没有数据返回。
我把这个条件加到子查询的where条件里,单独测试一下内层sql,也变得巨慢,这是为什么???(子查询里除了连表也有过滤数据的条件)

我单独拿a.col2='xxx'到a表中查询很快呀。

------解决方案--------------------
我很奇怪 你这样写居然没有错?where a.col2 is not null order by a.col2,b.col1这个a,b表没定义吧
 
------解决方案--------------------
看看2次的执行计划呢
------解决方案--------------------

这肯定是疏忽造成的,这各种变化...
------解决方案--------------------
少年 你再好好仔细检查检查吧
------解决方案--------------------
执行计划是关键
------解决方案--------------------
看看修改前和修改后的执行计划,然后比较一下。