クエリ実行プランの例を作成しようとしています。これは、テーブルのいくつかの列のカーディナリティの見積もりがある場合、どのクエリ実行プランが最もコストが低いかを判断できることを示しています。
したがって、これらの2つの投稿( 1 および 2 )があります。これらは、列の個別の値の数として推定カーディナリティを理解できます。次に、選択性を計算します。
SELECT max(price) FROM tickets WHERE country = "CANADA";
テーブルに180項目あり、10のみがカナダの場合。そして、4か国しかありません(カナダ、ブラジル、アメリカ、ドイツ)。そう....
列国é4のcardinalityは、個別のアイテムの数であるためです。
列=(カナダ)のselectivityは、アクセスされたアイテムの数をテーブルのアイテムで割ったものです。 10/180 = 0.0555。
しかし、オプティマイザがカーディナリティに基づいて選択できる異なるクエリ実行プランはどれですか?
これが良い例ではない場合、誰かが1つのクエリを指摘して、カーディナリティがオプティマイザにとって宝であるということを考えて、あるプランを別のプランを選択することを決定しますか?
おかげで、フェリペ
180行では、違いはほとんど見られません。
さまざまな述語分布でさまざまなプランが選択されることを確認するには、かなり多くのデータが必要であり、それらを支援するために競合するデータソース(インデックス)が必要になる可能性があります。
テーブルに1.8mmの行があるとしましょう。あなたが持っているなら
検索する国とその選択性によっては、集計方法、選択したシリアルプランとパラレルプラン、インデックスの選択方法に違いが見られる場合があります。
最近のQ&Aの例:
より複雑な理由により:
だから、これはあなたが探しているものではありませんが、役立つかもしれません。先週尋ねた別の質問に対する回答を提供しました。
この質問では、IN()
ステートメントに単一の値を追加することで、クエリプランと実行時間が変更されました。別の人から提供されたその質問に対する素晴らしい答えがあるので、うまくいけば、あなたが探している詳細がわかるでしょう。