目的とクエリの内容によって異なります。
一般に、Using where
を持つEXPLAINのすべての行に対して 、インデックス(possible keys
)を使用して取得する必要があります およびkeys
桁)。これらはフィルターであり、WHEREとONが含まれます。 Using index
と言わせる さらに良いです。これは、カバーするインデックスがあり、MySQLがテーブルデータの行にアクセスするのではなく、インデックスから直接データを取得できることを意味します。
Using where
がない行 、そしてそれは多くの行を返すことを確認する必要があります。これらは、テーブル内のすべての行の値を返します。あなたの質問が何であるかわからないので、ここで警戒するべきかどうかわかりません。結果セットをフィルタリングして、サイズを縮小し、パフォーマンスを向上させてください。
通常、Using filesort
が表示されないようにする必要があります またはUsing temporary
、しかし、それらはあなたがそれらを期待していない場合にのみ悪いです。
Filesortは通常、ORDER句とともに表示されます。通常、MySQLでカバーインデックスを使用する必要があります(Using index
)行がサーバーから順番に返されるようにします。そうでない場合、MySQLはファイルソートを使用して後でそれらを注文する必要があります。
Using temporary
派生テーブルにはインデックスがないため、派生テーブルを参照する場合は問題になる可能性があります。インデックスを使用して一時テーブルを明示的に作成したようですので、ここでは悪くありません。場合によっては、派生テーブルを使用することしか選択できないため、Using temporary
を使用することもできます。 。