多くの作業を行った後、私はついにかなり複雑なクエリを取得して、非常にスムーズに動作し、結果を非常に迅速に返しました。
開発とテストの両方でうまく実行されていましたが、現在、テストはかなり遅くなっています。開発で0.06秒かかり、テストでもほぼ同じだったExplainクエリは、テストでは7秒になりました。
説明は少し異なりますが、なぜこれが開発者からの説明になるのかわかりません
-+ --------- + ------------------------------ + ------ + ------------------------------ --- + | id | select_type | テーブル| タイプ| possible_keys | 鍵 | key_len | ref | 行| 追加 | + ---- + ------------- + ------------ + -------- + -------- ----------------- + ------------ -+ --------- + ------------------------------ + ------ + ------------------------------ --- + | 1 | プライマリー| | すべて| NULL | ヌル | NULL | NULL | 5 | | | 1 | プライマリー| チケット| ref | biddate_idx | biddate_idx | 7 | showsdate.bid、showsdate.date | 78 | | | 2 | 派生| ショー| すべて| biddate_idx、latlong_idx | ヌル | NULL | NULL | 3089 | 一時的な使用; filesoの使用 rt | | 2 | 派生| ジャンル| ref | bandid_idx | bandid_idx | 4 | activehw.shows.bid | 2 | インデックスの使用 | | 2 | 派生| アーティスト| eq_ref | bid_idx | bid_idx | 4 | activehw.genres.bid | 1 | 場所を使用する | + ---- + ------------- + ------------ + -------- + -------- ----------------- + ------------
とテストで
| id | select_type | テーブル| タイプ| possible_keys | キー| key_len | ref | 行| エクストラ| + ---- + ------------- + ------------ + -------- + -------- ----------------- + ------------- + --------- + -------- ---------------------- + -------- + ------------------ ---------------------------- + | 1 | プライマリー| | すべて| NULL | NULL | NULL | NULL | 5 | | | 1 | プライマリー| チケット| ref | biddate_idx | biddate_idx | 7 | showsdate.bid、showsdate.date | 78 | | | 2 | 派生| ジャンル| インデックス| bandid_idx | bandid_idx | 139 | NULL | 531281 | インデックスを使用します。一時的な使用; filesortの使用| | 2 | 派生| アーティスト| eq_ref | bid_idx | bid_idx | 4 | activeHW.genres.bid | 1 | | | 2 | 派生| ショー| eq_ref | biddate_idx、latlong_idx | biddate_idx | 7 | activeHW.artists.bid | 1 | whereを使用する| + ---- + ------------- + ------------ + -------- + -------- ----------------- + ------------- + --------- + -------- ---------------------- + -------- + ------------------ ---------------------------- + セットで5行(6.99秒)
クエリはまったく同じですが、テーブルの順序は異なります。これが速度低下の原因になりますか?もしそうなら、私はそれをどのように修正しますか?開発者はWindowsであり、テストはcentOsです。どちらも同じバージョンのmysql5.0を実行しており、私が言ったように、テストは完全に実行されており、データベースに構造的な変更を加えていません。
mysqlcheckを実行したところ、すべてのテーブルが正常に戻ってきました。