MySQL にビュー クエリのインデックスを利用させる
クエリ: MySQL にインデックスの利用を促すにはどうすればよいですか眺めのためにquery?
答え: MySQL でビューを使用するのは理想的ではないかもしれませんが、適切なインデックス構造が提供されている場合、MySQL はビュー クエリにインデックスを利用できます。
詳細説明:
MySQL のビュー クエリは他のデータベースとは異なります。オプティマイザーは、述語を外部クエリからビュー クエリに「プッシュ」しません。この場合、外側のクエリは happens_in でフィルタリングしますが、MySQL はビュー クエリの実行時にこのフィルタを適用しません。
その結果、ビュー クエリは個別に処理され、一時テーブル (派生テーブル) が作成されます。 。外部クエリを実行すると、派生テーブルが行ソースとして使用され、happen_in = 2006 述語が評価されます。
パフォーマンスを向上させるために、カバー インデックスを定義できます。
CREATE INDEX highscores_IX3 ON highscores (player, happened_in, score)
このインデックスには、ビュー クエリで参照されるすべての列が含まれます。先頭の列 (等価述語) として player が続き、その後に happens_in (GROUP BY) が続きます。スコアを含めると、インデックスがカバー インデックスになり、MySQL がインデックスだけから必要なデータをすべて取得できるようになります。
あるいは、派生テーブルを利用しないスタンドアロン クエリの使用を検討してください。これにより、場合によってはパフォーマンスが向上する可能性があります。 :
SELECT player, MAX(score) AS highest_score, happened_in FROM highscores WHERE player = 24 AND happened_in = 2006 GROUP BY player, happened_in
この変更と適切なカバーインデックスにより、MySQL はビュークエリを最適化し、利用可能なクエリを活用してパフォーマンスを大幅に向上させることができるはずです。インデックス。
以上がMySQL でビュー クエリにインデックスを使用できるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。