现在是否有索引?ta和tb的记录各有多少。
如果ta和tb的记录都差不多,且已经按tb.bid或ta.bid建立了索引,那么需要看是查询慢还是排序慢,可以先不排序看看执行时间。若是查询慢,也许用cluster表可以提高查询时的连接时间。若是排序慢,考虑加大排序区的大小,减少磁盘排序次数。
如果两个表的记录数相差很大,需要用小表做驱动表,可以只在大表的bid上建索引。
如果ta和tb的记录都差不多,且已经按tb.bid或ta.bid建立了索引,那么需要看是查询慢还是排序慢,可以先不排序看看执行时间。若是查询慢,也许用cluster表可以提高查询时的连接时间。若是排序慢,考虑加大排序区的大小,减少磁盘排序次数。
如果两个表的记录数相差很大,需要用小表做驱动表,可以只在大表的bid上建索引。
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;
T_JYUCD TJY表是明细表,
JOIN T_JYUCH 表是类别表。
JOIN T_JYUCH 表是类别表,数据200万左右。
楼主,贴一下执行计划。
再执行:
set autotrace traceonly;
然后执行你的SQL,得到的就是执行计划.