この例のように、結合の順序もわかりません。また、表の「ALL」と「ref」はどういう意味ですか?視覚的な説明に関するマニュアルはありますか?
EXPLAINのref
の定義は であるため、ref
は明らかにキー付きルックアップを意味します。
Ref列は、テーブルから行を選択するために、キー列で指定されたインデックスと比較される列または定数を示します。
ALL
に関しては、同じURLが言うので、それは全表スキャンを指していると思います
全表スキャンは、前の表の行の組み合わせごとに実行されます。これは、テーブルがconstとマークされていない最初のテーブルである場合は通常は良くなく、他のすべての場合は通常非常に悪いです。通常、定数値または以前のテーブルの列値に基づいてテーブルから行を取得できるようにするインデックスを追加することで、ALLを回避できます。
正直なところ、私はORDER BY
です。上記のグラフを、次のいずれかからのテキストベースの出力と比較してみてください。
jOINの順序がそこで意味があるかどうかを確認します。
結合の順序は左から右です。つまり、上記の例では、ネストされたループ結合は、CUSTOMERの全表スキャンと、それに続くORDERSおよびLINEITEMへのインデックスルックアップによって実行されます。 (ALLおよびrefの意味は、従来のEXPLAINのユーザーマニュアルで定義されています。)
Visual EXPLAINは、MySQL Workbench 6.1で大幅に更新され、テーブル操作のより説明的なテキストが含まれていることに注意してください。