ホームページ  >  記事  >  データベース  >  ビューのコストが、基になるテーブルで同じクエリを実行する場合よりも大幅に高くなるのはなぜですか?

ビューのコストが、基になるテーブルで同じクエリを実行する場合よりも大幅に高くなるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 00:26:29599ブラウズ

Why Does a View Show Significantly Higher Cost Than Executing Same Query on an Underlying Table?

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

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