0

次のクエリがあります。

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 BYORDER BY本当に高速 (0.08 秒)を使用しない場合。

Explain は、一時テーブルが作成されることを示しています。 ここに画像の説明を入力

パーツの両方のフィールドにorder byは、通常のインデックス (asc) があります。

これが問題ですか?どうすればこれを回避できますか?

ティアマット

4

1 に答える 1