ホームページ >データベース >mysql チュートリアル >ビューのコストが、基になるテーブルで同じクエリを実行する場合よりも大幅に高くなるのはなぜですか?
MySQL ビューのパフォーマンスの問題
問題:
ユーザーがテーブルに対してクエリを実行しました行数が 100,000 行の場合、特定の状態に基づいてフィルタリングするとコストが高くなります (5,200)。同じ集約クエリを使用してビューを作成し、そのビューでフィルタリングすると、コストが大幅に高くなります (100,000)。
説明:
コストの不一致の原因は次のとおりです。使用される表示アルゴリズム。ビューのデフォルトのアルゴリズムは temptable で、基になるテーブルからすべての行を取得してフィルターを適用します。これにより、フィルタリングが少数の行に基づいている場合、パフォーマンスが低下する可能性があります。
解決策:
この問題を解決するには、ビューを次のように定義する必要があります。 merge アルゴリズム。基になるテーブルのインデックスを使用できるようになり、フィルタリングの効率が向上します。これは、次の構文を使用して実行できます。
<code class="sql">CREATE OR REPLACE VIEW vw_users AS SELECT state, COUNT(*) AS cnt FROM users WITH MERGE VIEW;</code>
マージ アルゴリズムを使用すると、ビューのクエリで状態列のインデックスを利用できるようになり、コストが削減され、パフォーマンスが向上します。
以上がビューのコストが、基になるテーブルで同じクエリを実行する場合よりも大幅に高くなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。