select TPS.CD_CHILD_PRODUCT 
FROM  SCHAGU.T_PRODUCT_STRUCTURE TPS JOIN SCHAGU.T_PRODUCT TP ON TP.CD_PRODUCT = TPS.CD_CHILD_PRODUCT 
INNER JOIN SCHAGU.T_PRODUCT_NAME TPN_EN ON TP.ID_PRODUCT = TPN_EN.ID_PRODUCT 
AND  TPN_EN.CD_LANG = 'en' LEFT OUTER JOIN SCHAGU.T_PRODUCT_NAME TPN_LC ON TP.ID_PRODUCT = TPN_LC.ID_PRODUCT 
AND  TPN_LC.CD_LANG = 'ja'
where TPS.CD_CHILD_PRODUCT = 'kousei_TEST02'数据量
SCHAGU.T_PRODUCT_STRUCTURE  3200
SCHAGU.T_PRODUCT  140000
SCHAGU.T_PRODUCT_NAME  280000关联条件都是索引。现在执行时间:0.8秒希望高手能给出优化建议。

解决方案 »

  1.   

    0.8秒已经是可以再优化,不过没有环境,我用SQL40万也才用0.1秒
    你写个这SQL的中心表是那就以那个放在第一位,还有ORACLE是右边开始执行,就是缩小最大的放在最后面(where)
      

  2.   

    0.8秒就别在优化了吧.很不错拉.不过你可以把下面的SQL运行下看看是不是能更快些:select /*RULE*/ TPS.CD_CHILD_PRODUCT 
    FROM  SCHAGU.T_PRODUCT_STRUCTURE TPS JOIN SCHAGU.T_PRODUCT TP ON TP.CD_PRODUCT = TPS.CD_CHILD_PRODUCT 
    INNER JOIN SCHAGU.T_PRODUCT_NAME TPN_EN ON TP.ID_PRODUCT = TPN_EN.ID_PRODUCT 
    AND  TPN_EN.CD_LANG = 'en' LEFT OUTER JOIN SCHAGU.T_PRODUCT_NAME TPN_LC ON TP.ID_PRODUCT = TPN_LC.ID_PRODUCT 
    AND  TPN_LC.CD_LANG = 'ja'
    where TPS.CD_CHILD_PRODUCT = 'kousei_TEST02'
      

  3.   

    多表连接查询,最好给各个表取别名。
    固定的where条件最好放在最后当然,具体的sql好不好,还要看具体的执行计划