读书人

一个带子查询的查询优化有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

一个带子查询的查询优化问题
我有2个表a和b,a表13万行,b表41万行,现在做了个查询,分两步:
1.从a表选择部分记录存入中间表,结果大约有150行,有distinct。
2.把上面的中间表和b表连接,加上一些对b表的限制条件,统计后输出结果。
注:如果把中间表和b表直接连接,结果大约200多行。
我的问题是:
如果我按照上述的步骤搞个中间表,分两步查询,那么查询时间可以忽略不计。如果我合二为一,那么不论我使用子表,exists,还是in,结果都是17秒。
这个好像差太远了吧,有没有什么提高速度的办法?
优化
[解决办法]
这种事情肯定是搞个中间表速度比较快嘛
[解决办法]
2个表直接关联的查询计划是什么?
中间表150行再和b关联无论怎么join都会很快
[解决办法]
这个要把执行计划贴出来才好分析
[解决办法]
唯一可行的就是在a表b表连接条件的字段加上索引,可以提高效率。提高的还会很多。很接近楼主说的是用中间表的效率。
[解决办法]
什么叫:执行计划又不能控制?
[解决办法]
select * from (select distinct a_1 from a where ...) as c inner hash join b on ... where ...

读书人网 >SQL Server

热点推荐