日期:2014-05-16  浏览次数:21016 次

ORACLE多表连接查询效率求助
SQL code
SELECT 
B.UPLOAD_DATE 
,Q.C2_8260_2 
,Q.C6_8169_12 
,Q.C5_8249_11 
,Q.C3_8155_6 
,Q.C3_8155_6 
,N.C2_3039_2 
,T.C2_8028_2 
,T.C2_8028_2 
,D.C1_2380_2 
,R.C1_1154_2 
,W.C3_6314_7 
FROM EDIMESSAGE E
INNER JOIN UNB B ON B.MSG_ID=E.PK_ID
INNER JOIN UNH H ON H.ROOT_ID=B.PK_ID 
INNER JOIN EQD Q ON Q.MST_ID=H.PK_ID 
INNER JOIN MEA W ON Q.PK_ID=W.MST_ID
INNER JOIN NAD N ON N.MST_ID=H.PK_ID
INNER JOIN TDT T ON H.PK_ID=T.MST_ID
INNER JOIN RFF R ON R.MST_ID=Q.PK_ID
INNER JOIN DTM D ON D.MST_ID=Q.PK_ID
WHERE h.C2_0065_2='CODECO'



目前在做 一个查询,需要同时INNER JOIN 多张表,而且每张表都是上10W的数据量
如何对语句进行修改,索引已经加完。

------解决方案--------------------
据说:
INNER JOIN 超过5个,说明你的数据库表设计不合理。
------解决方案--------------------
跟你说下优化规则吧:
1.oracle的处理规则,他是从后面到前面的。所以同一个语句能尽量使数据量变小的条件要放后面,大表放前面。
2.建议你分步处理,使用临时表。