web-dev-qa-db-ja.com

MySQLはクエリの理解を説明します

私はいくつかのブログと最適化に関連したいくつかの記事、クエリを最適化する方法を読みました。インデックスを使用する必要があり、すべてのプライマリキーと外部キーが適切なリレーショナルデータベーススキーマを使用して正しく設定されていることを確認しました。

これで、最適化する必要があるクエリがあり、EXPLAINでこれを取得します。

Using where; Using temporary; Using filesort

MySQL 5.5を使用しています

WHEREを使用していますが、一時テーブルでもファイルソートでも使用していません。これは何を意味するのでしょうか?

49
Ken

一時的な使用とは、MySQLがクエリの実行時に計算された中間データを保存するためにいくつかの一時テーブルを使用する必要があることを意味します。

Filesortの使用は、MySQLがソートにインデックスを使用できないため、メモリ内で完全なソートを実行できないソートアルゴリズムです。代わりに、ソートを小さなチャンクに分割し、結果をマージして最終的なソート済みデータを取得します。

http://dev.mysql.com/doc/refman/5.0/en/explain-output.html を参照してください。

ORDER BYといくつかの派生テーブルまたはサブクエリを使用していると思います。クエリ、関連するテーブル/インデックス情報、およびEXPLAIN出力を貼り付けることができれば素晴らしいと思います。

35
Abhay