oracle
多表联合查询查询结果来自6个表,
查询条件来自超过10个表,如果用left join 的话,
我大概要建23个left join,
还有一些没有用连接直接select的(主要在where的条件中)测试了一下,
数据库里只有1条数据的情况下要跑20-40秒,请教一下高手,像这样的情况该怎么处理。怎么才能提交查询的速度!!!!!!!!

解决方案 »

  1.   

    好像用 hints,会提高,楼主试下
    select 
      /*+ first_rows */
      a.*, b.*
    from 
      tablea a,
      tableb b
    where a.id = b.aid
      

  2.   

    同意,将多个表整合成若干个临时表,再对临时表进行连接查询。多表连接,特别是大表,应该尽量避免
    另外,hint不一定会提高性能,或者说大部分情况下cbo判断是正确的,少数情况下才需要我们强制索引来提高性能
      

  3.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。