ホームページ >データベース >mysql チュートリアル >MySQL でビュー クエリにインデックスを使用できるようにするにはどうすればよいですか?

MySQL でビュー クエリにインデックスを使用できるようにするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 01:19:02738ブラウズ

How Can I Get MySQL to Use Indices for View Queries?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。