HOME»データベーススペシャリスト掲示板»H16 午後1 問4  複合列索引による探索方法
投稿する

[0489] H16 午後1 問4  複合列索引による探索方法

 クロロンさん(No.1) 
設問2について

<問題>
業種コード = '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日経過したスレッドへの書込みはできません。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop