现在是否有索引?ta和tb的记录各有多少。
如果ta和tb的记录都差不多,且已经按tb.bid或ta.bid建立了索引,那么需要看是查询慢还是排序慢,可以先不排序看看执行时间。若是查询慢,也许用cluster表可以提高查询时的连接时间。若是排序慢,考虑加大排序区的大小,减少磁盘排序次数。
如果两个表的记录数相差很大,需要用小表做驱动表,可以只在大表的bid上建索引。

解决方案 »

  1.   

    一个大概300百万条,一个不到200万条。仅仅查询,没有order by也很慢
      

  2.   

    你还是把完整SQL贴出来比较好优化,你这样光秃秃的一句叫人怎么分析啊
      

  3.   

    SELECT
            TJ.JYUCHU_YMD,                      
            TJ.SOSHIKI_CD AS TJ_SOSHIKI_CD,
            TJ.JYUCHU_NO AS TJ_JYUCHU_NO,
            TJ.AKA_KURO_KBN AS TJ_AKA_KURO_KBN,
            IKOP.PROMOCD,                         
            IKOP.PROHINBAN,                        
            IKOP.PROCOLCD,                        
            IKOP.PROSIZECD,                         
            IKOP.OLD_SHOHINCD AS IKOP_OLD_SHOHINCD,
            TJY.KAIYAKU_YMD,                    
            TJY.HAIKAN_YMD,                     
            TJY.SURYO,                                 
            TJY.WARIBIKI_GAKU,                      
            TJY.ZEINUKI_KINGAKU,                   
            TJY.SOSHIKI_CD AS TJY_SOSHIKI_CD,
            TJY.JYUCHU_NO AS TJY_JYUCHU_NO,
            TJY.AKA_KURO_KBN AS TJY_AKA_KURO_KBN,
            TJY.SHOHIN_CD AS TJY_SHOHIN_CD,
            IH.HINBAN,                                      
            IH.COLORCD,                                 
            IH.SIZECD,                                     
            IH.OLD_SHOHINCD AS IH_OLD_SHOHINCD
        FROM T_JYUCD TJY
        LEFT JOIN T_JYUCH TJ
        ON (TJ.SOSHIKI_CD = TJY.SOSHIKI_CD AND TJ.JYUCHU_NO = TJY.JYUCHU_NO
         AND TJ.AKA_KURO_KBN=TJY.AKA_KURO_KBN)
        LEFT JOIN IKO_PROSHOCDCHG IKOP
        ON (TJY.SHOHIN_CD = IKOP.OLD_SHOHINCD)
        LEFT JOIN IKO_HINBANCHG IH 
        ON TJY.SHOHIN_CD = IH.OLD_SHOHINCD
        ORDER BY TJ.JYUCHU_YMD, IKOP.PROMOCD, IKOP.PROHINBAN, IKOP.PROCOLCD, IKOP.PROSIZECD;
      

  4.   

    以上就是完整的sql。其中,
    T_JYUCD TJY表是明细表,
    JOIN T_JYUCH 表是类别表。
      

  5.   

    T_JYUCD TJY表是明细表,数据不到300万条。
    JOIN T_JYUCH 表是类别表,数据200万左右。
      

  6.   

    妈妈呀,一个Where条件都没有,会返回多少条记录呀。。
    楼主,贴一下执行计划。
      

  7.   

    楼上的,我第一次搞oracle,执行计划是什么东东?见笑了
      

  8.   

    安装pl/sql developer吧,这个工具很好用的。打开一个新的explain plan窗口,贴入SQL,按执行,就可以显示执行计划了。
      

  9.   

    执行sqlplus命令,登陆到数据库中,
    再执行:
    set autotrace traceonly;
    然后执行你的SQL,得到的就是执行计划.