H16 午後1 問4 複合列索引による探索方法
クロロンさん
(No.1)
設問2について
<問題>
業種コード = 'G1' の絞り込み率:5%
ポイント数合計 > 900000 の絞り込み率:1% (ポイント数合計はユニーク)
索引4:ポイント数合計、業種コード (非ユニークかつ非クラスタ索引)
索引5:業種コード、ポイント数合計 (非ユニークかつ非クラスタ索引)
索引4,5を使用した物理入出力回数が問われています。
<解説>
索引4を使用した場合:
三好本の解説を引用します。
「第1列が等しいもの同士が第2列によってソートされることもない。...従って、絞り込み率はポイント数合計と同じ1%となる。」
<疑問>
・複合列索引はソートされてるのでしょうか?
調べたところ、普通の索引も複合列索引もソートされているという情報は得られなかったです。
・索引5では5% * 1%が答えですが、索引4では1%だけになる理由が分からないです。
見落としてる考え方など教えていただけないでしょうか。
<問題>
業種コード = 'G1' の絞り込み率:5%
ポイント数合計 > 900000 の絞り込み率:1% (ポイント数合計はユニーク)
索引4:ポイント数合計、業種コード (非ユニークかつ非クラスタ索引)
索引5:業種コード、ポイント数合計 (非ユニークかつ非クラスタ索引)
索引4,5を使用した物理入出力回数が問われています。
<解説>
索引4を使用した場合:
三好本の解説を引用します。
「第1列が等しいもの同士が第2列によってソートされることもない。...従って、絞り込み率はポイント数合計と同じ1%となる。」
<疑問>
・複合列索引はソートされてるのでしょうか?
調べたところ、普通の索引も複合列索引もソートされているという情報は得られなかったです。
・索引5では5% * 1%が答えですが、索引4では1%だけになる理由が分からないです。
見落としてる考え方など教えていただけないでしょうか。
2023.06.11 18:41
gawaさん
(No.2)
問題が古すぎて過去問にたどりつけなかったので、もう少し情報ください。テーブル構造とか、どういうクエリーなのか、とか‥
2023.06.11 21:31
DCLさん
(No.3)
>複合列索引はソートされてるのでしょうか?
ソートされます。DB試験で問われているBtree索引は
単一列であろうと、複合列であろうと
索引ページはすべてソートされます。
索引4:order by ポイント数合計、業種コード
索引5:order by 業種コード、ポイント数合計
↑みたいなものと、ひとまず思っていただいて大丈夫です。
※行ロケータのデータページアドレスの並びはまた別です。
この並びが順次か、ランダムかで、クラスタ索引、非クラスタ索引に分けられます。
この16年索引の問題文にはイメージ図があったはずなので
そちらもチェックしてみてください。
>索引5では5% * 1%が答えですが、索引4では1%だけになる理由が分からないです。
上記を踏まえたうえで…
1.業種コード:G1~G20が5%ずつ均等に分布したデータ
2.ポイント数合計(900000>が1%)が均等に分布したデータ
1,2を満たしたテーブルAがあるとします。
疑似索引4:SELECT ポイント数合計、業種コード FROM A order by ポイント数合計、業種コード
疑似索引5:SELECT 業種コード、ポイント数合計 FROM A order by 業種コード、ポイント数合計
結果をExcelに張り付けてみてください。
索引5は業種コードG1の中のポイント数合計900000>の行をそのまま取得できると思います。
索引4はポイント数合計900000>の行までは絞れますが、その中にG1~G20が均等に散らばっているので
これ以上の絞りこみが出来ません(※フィルタリングが必要になります)
→従って、索引で絞り込める行数は索引5が1/2000、索引4が1/100となります
このExcel操作と似たような処理が索引ページのアクセスでおこなわれています。
※この後にデータページにアクセスしていきます。
2023.06.27 08:59
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。