H27 午後1 問3 設問1-(3)

efさん  
(No.1)
H27 午後1 問3 設問1-(3)の答えが500,000ページになることが理解できません。
"売上明細"テーブルの「カード番号」の列値個数が2,000,000で、この量が10ヶ月であることと"利用残高"テーブルが10行/ページであることから、
2,000,000 / 10 / 10 = 20,000  となると考えました。

詳しい方がいましたらご教示いただけますと幸いです。


#過去のスレッド(0404)で同様の疑問を持った方がおり、私と同じ考えをしていたようでして、そのスレッドで「1ヶ月あたり、20万枚のカードが新規で追加されている」という回答をされている方がいましたが、こちらについても理解ができていません。
https://www.db-siken.com/bbs/0404.html
2024.09.09 22:28
さにーさん 
(No.2)
まず、利用残高テーブルはカード1枚(カード番号1つ)につき1行ですが、
売上明細テーブルはカード1枚につき複数行あります。
売上明細テーブルのカード番号の列値個数が2,000,000といのは、
この10か月で利用されたカードの枚数です。
(ここまで、設問1で問われている通り)
一方、利用残高テーブルには5,000,000枚のカードが登録されています。

設問2で問われているのは、
売上明細テーブルから1行読み込むごとに、カード番号をキーに利用残高テーブルから1行読み込むとき、売上明細テーブルのソートを「カード番号、利用年月日」に変更したら利用残高テーブルの読み込みページ数はいくらか?
ということです。

ジョブ2では、売上明細テーブルを1行読み込むたびに利用残高テーブルから該当のカード番号を探してページを読み込んでいます。

売上明細テーブルを行ごとに読み込みカード番号が変わっても、同じページの中に該当のカード番号があれば再度ページを読み込む必要はありません。したがって、売上明細テーブルがカード番号でソートされているのであれば、ジョブ2では利用残高テーブルのページを読み込みなおすのは、売上明細テーブルのカード番号が利用残高テーブルのページ内から無くなったときだけです。

よって、利用残高テーブルの読み込むページ数は、
列値個数5,000,000/行数10 = 500,000ページ
となるわけです。
2024.09.19 16:43
赤茶べこさん 
(No.3)
ef様、さにー様
横から失礼します。私もef様に近い疑問があったためやり取りを拝読しておりました。

今回は売上明細テーブルのカード番号の列値個数は2百万個、利用残高テーブルのカード番号の列値個数は5百万個であるため、売上明細テーブルのカード番号に対応する利用残高のカード番号が記録されているページだけを1回ずつ読み込んだほうが、全ページを順次アクセスするより読み込みページ数が減ると思うのですがいかがでしょうか?(売上明細テーブルも利用残高テーブルもカード番号順に並んでいるため、同じページを複数回読み込むこともないでしょうし。。)
2024.09.21 10:53
さにーさん 
(No.4)
この投稿は投稿者により削除されました。(2024.09.23 14:08)
2024.09.23 14:08
さにーさん 
(No.5)
問題として問われているのは、最大何ページ読むかです。
売上明細テーブルのカード番号の列値個数は2,000,000個ですから最小で言うと200,000ページの読み込みになるでしょう。しかし、読み込み対象のカード番号が運良く偏っているときを考えるよりも最悪の場合で考えるのが基本です。
売上明細テーブルがカード番号でソートされていなかったとしても、運が良ければ最小は200,000ページですから。
2024.09.23 14:09

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop