私はいくつかのブログと最適化に関連したいくつかの記事、クエリを最適化する方法を読みました。インデックスを使用する必要があり、すべてのプライマリキーと外部キーが適切なリレーショナルデータベーススキーマを使用して正しく設定されていることを確認しました。
これで、最適化する必要があるクエリがあり、EXPLAIN
でこれを取得します。
Using where; Using temporary; Using filesort
MySQL 5.5を使用しています
WHERE
を使用していますが、一時テーブルでもファイルソートでも使用していません。これは何を意味するのでしょうか?
一時的な使用とは、MySQLがクエリの実行時に計算された中間データを保存するためにいくつかの一時テーブルを使用する必要があることを意味します。
Filesortの使用は、MySQLがソートにインデックスを使用できないため、メモリ内で完全なソートを実行できないソートアルゴリズムです。代わりに、ソートを小さなチャンクに分割し、結果をマージして最終的なソート済みデータを取得します。
http://dev.mysql.com/doc/refman/5.0/en/explain-output.html を参照してください。
ORDER BYといくつかの派生テーブルまたはサブクエリを使用していると思います。クエリ、関連するテーブル/インデックス情報、およびEXPLAIN出力を貼り付けることができれば素晴らしいと思います。