2

かなり大きく (3 つの巨大なテーブルを結合)、実行速度が遅すぎる SQL クエリがあります。私はそれを最適化しようとしていますが、奇妙な観察で実行されました:

SELECT board FROM ((foo JOIN bar ON id_bar=bar.id) JOIN baz ON id_baz=baz.id) ORDER BY foo.id DESC LIMIT 1;

+-------+
| board |
+-------+
|     3 |
+-------+
1 row in set (3,99 sec)

boardは int フィールドで、インデックスがあります。良い。しかし、インデックス付きvarchar(6)フィールドを選択すると、遅い結果が得られます。

SELECT type FROM ((foo JOIN bar ON id_bar=bar.id) JOIN baz ON id_baz=baz.id) ORDER BY foo.id DESC LIMIT 1;

+--------+
|  type  |
+--------+
| normal |
+--------+
1 row in set (17,76 sec)

そんなことがあるものか ?クエリの遅い部分は、実際の結果の表示ではなく、JOIN/ ORDER/ GROUP/の部分にあると思いました。WHEREそのクエリを強化するにはどうすればよいですか?

4

1 に答える 1