新人求助 关于 left join添加索引

情况是left join 进来的T4,T5,T6 导致sql文太慢,大概60s。
因为才接触sql文没多久,对于这个不是很懂,百度了一下没有找到合适的资料,特来求助。望大神给予详细解答。非常感谢。

SQL如下:
SELECT *
FROM T1
INNER JOIN T2
ON T1.×× = T2.××
INNER JOIN T3
ON T2.×× = T3.××

LEFT JOIN T4
ON T1.○○ = T4.○○
LEFT JOIN T5
ON T1.○○ = T5.○○
LEFT JOIN T6
ON T1.○○ = T6.○○
AND T6.CD = 01

INNER JOIN T7
ON T2.△△ = T7.△△
INNER(SELECT DISTICT T82.×○
FROM T81
INNER JOIN T82
ON T81.×× = T82.××
WHERE EC_NO = 'DA2846')T9
ON T1.△△ = T9.△△
WHERE T3.FOM_STS BETWEEN 1 AND 3
AND T7.EC_NO = 'DA2846'
GROUP BY ......

  1. left join后的结果无法建立索引,但你可以对每个表参与join的字段建立索引。
  2. 你这个语句有大量连接操作,而且含有外连接会生成很大的表,所以比较慢。建议你先进行选择操作,再连接。例如你的条件中含有对T3和T7的判断语句,这两个判断语句可以直接放在对T3和T7的连接上,减少生成的表的大小,而不要放在所有表都连接到一起后再选择需要的数据。

join on中的几个列是否都建立了索引