+ -
当前位置:首页 → 问答吧 → 请问下面的SQL语句为什么执行很慢?

请问下面的SQL语句为什么执行很慢?

时间:2011-09-08

来源:互联网

select A.字段1
  from A
  where (A.字段2) in 
  (select A1.字段2
  from A A1,
  B
  where A1.字段1 = B.字段1
  and A1.字段3 = '0001'
  group by A1.字段2
  )
上面的SQL中
select A1.字段2
  from A A1,
  B
  where A1.字段1 = B.字段1
  and A1.字段3 = '0001'
  group by A1.字段2
执行很快,而且只检索到一条语句。但是整个SQL却执行非常慢。
表A中的数据比较多,有几万条,我看执行计划,发现他是用A与表A进行Hashjoin,而且是全表扫描。为什么执行计划没有按照SQL中的顺序执行,而是先进行A与表A进行Hashjoin。这个SQL应该如何优化?谢谢!

作者: maoloverme1   发布时间: 2011-09-08

select /*+use_nl(A,c)*/ A.字段1
  from A
  where (A.字段2) in  
  (select A1.字段2
  from A A1,
  B
  where A1.字段1 = B.字段1
  and A1.字段3 = '0001'
  group by A1.字段2
  ) c
这样试一下。应该会快的

作者: cangtian86   发布时间: 2011-09-08

热门下载

更多