次のクエリがあります。
select
`gasr`.`RID`,
`gasr`.`ID`,
`gr`.`RID`,
`gr`.`TID`
...
from
(((((((((((( `gasr`
left join `gasro` ON ((`gasr`.`ID` = `gasro`.`ARID`)))
left join `gro` ON ((`gro`.`RID` = `gasr`.`RID`)))
left join `p` ON ((`p`.`ID` = `gasr`.`ID`)))
left join `l` ON ((`l`.`ID` = `p`.`LID`)))
left join `k` ON ((`k`.`ID` = `p`.`KID`)))
left join `s` ON ((`s`.`ID` = `p`.`TID`)))
left join `ad` ON ((`ad`.`ID` = `p`.`DID`)))
left join `ae` ON ((`ae`.`ID` = `p`.`EID`)))
left join `gr` ON ((`gasr`.`RID` = `gr`.`ID`)))
left join `gs` ON ((`gs`.`ID` = `gr`.`SID`)))
left join `ka` ON ((`ka`.`ID` = `gs`.`KID`)))
left join `m` ON ((`m`.`ID` = `ka`.`MID`)))
ORDER BY gs.ID, gr.RID
説明どおりに を使用すると、時間がかかります (約 5 秒) ORDER BY
。ORDER BY
本当に高速 (0.08 秒)を使用しない場合。
Explain は、一時テーブルが作成されることを示しています。
パーツの両方のフィールドにorder by
は、通常のインデックス (asc) があります。
これが問題ですか?どうすればこれを回避できますか?
ティアマット