HOME»データベーススペシャリスト掲示板»令和2年 午後2 問1 設問1 (1)
投稿する
»[0232] H29 午後2 問2(1)e 広域得意先の属性名に 投稿数:3
»[0231] h24 pm1 問1 設問3の(1)のオについて 投稿数:4
令和2年 午後2 問1 設問1 (1) [0234]
索引さん(No.1)
解答は
(世帯区分、地域コード)
となっています。
(世帯区分)のみで良いのではないのでしょうか。
理由:
比較対象住居が、
同じ地域の場合 ⇒ 住居.地域コード=~~ ⇒ すでに存在する(地域コード)の索引を使用
同じ世帯区分の場合 ⇒ 住居.世帯区分=~~ ⇒ (世帯区分)の索引を使用
同じ地域かつ同じ世帯区分の場合 ⇒ 住居.地域コード=~~ AND 住居.世帯区分=~~
⇒ 地域コードについては(地域コード)索引、世帯区分については(世帯区分)索引を使用
いずれの場合も、(地域コード)と(世帯区分)の2つの索引があれば、
「等値比較の述語の対象列が、索引キーの全体に一致している」ため、索引探索が使用されると思います。
以上です。
(世帯区分、地域コード)
となっています。
(世帯区分)のみで良いのではないのでしょうか。
理由:
比較対象住居が、
同じ地域の場合 ⇒ 住居.地域コード=~~ ⇒ すでに存在する(地域コード)の索引を使用
同じ世帯区分の場合 ⇒ 住居.世帯区分=~~ ⇒ (世帯区分)の索引を使用
同じ地域かつ同じ世帯区分の場合 ⇒ 住居.地域コード=~~ AND 住居.世帯区分=~~
⇒ 地域コードについては(地域コード)索引、世帯区分については(世帯区分)索引を使用
いずれの場合も、(地域コード)と(世帯区分)の2つの索引があれば、
「等値比較の述語の対象列が、索引キーの全体に一致している」ため、索引探索が使用されると思います。
以上です。
2021.09.19 17:18
索引さん(No.2)
この投稿は投稿者により削除されました。(2021.09.19 20:50)
2021.09.19 20:50
索引さん(No.3)
自己解決しました。
以下自分の覚書で残します。
・忘れていたこと
基本、1SQLで使われるのは、1index
(ただし、mysqlにはインデックスマージといって、1SQL内で複数の索引を使える機能があるらしい。が、デスペでは無視してよい?)
・気づいていなかったこと
設問に、比較対象住居を索引内で絞り込むようにしたい。と書かれている。
■結論
where句のパターンは以下。
①地域コード=~~
②世帯区分=~~
③地域コード=~~ AND 世帯区分=~~ ※順不同
indexのパターンは以下。
1.(地域コード)、(世帯区分)
2.(地域コード)、(地域コード、世帯区分)
3.(地域コード)、(世帯区分、地域コード)
1.(地域コード)、(世帯区分)の場合
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(世帯区分)より、OK
③地域コード=~~ AND 世帯区分=~~ ※順不同
(地域コード)を使うと、世帯区分が索引内で絞れない。(該当する地域コードを持つ行はヒットするが、その世帯区分が今回指定する世帯区分かは索引内ではわからない。)
(世帯区分)を使うと、地域コードが索引内で絞れない。(該当する世帯区分を持つ行はヒットするが、その地域コードが今回指定する地域コードかは索引内ではわからない。)
2.(地域コード)、(地域コード、世帯区分)の場合
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(地域コード、世帯区分)⇒複合インデックスの、第二カラム指定のため、索引は使われない。NG
③地域コード=~~ AND 世帯区分=~~ ※順不同
(地域コード、世帯区分)より、OK
3.(地域コード)、(世帯区分、地域コード)
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(世帯区分、地域コード)⇒複合インデックスの、第一カラム指定のため、索引が使われる。指定するのは世帯区分のみのため、ここまでの絞り込みでOK
③地域コード=~~ AND 世帯区分=~~ ※順不同
(世帯区分、地域コード)よりOK
以上より、追加する索引は(世帯区分、地域コード)
※ただし、もし設問で「比較対象住居を索引内で絞り込むようにしたい。」と書かれていなかったら
(地域コード)、(世帯区分)でもよかった?単品の検索はもちろん、ANDでやっても、片方は索引に引っかかるので、索引探索は満たしている。。。?
(この結論に辿り着くのに、6,7時間もかかってしまった。。多分二度と間違えないような気がする。)
以下自分の覚書で残します。
・忘れていたこと
基本、1SQLで使われるのは、1index
(ただし、mysqlにはインデックスマージといって、1SQL内で複数の索引を使える機能があるらしい。が、デスペでは無視してよい?)
・気づいていなかったこと
設問に、比較対象住居を索引内で絞り込むようにしたい。と書かれている。
■結論
where句のパターンは以下。
①地域コード=~~
②世帯区分=~~
③地域コード=~~ AND 世帯区分=~~ ※順不同
indexのパターンは以下。
1.(地域コード)、(世帯区分)
2.(地域コード)、(地域コード、世帯区分)
3.(地域コード)、(世帯区分、地域コード)
1.(地域コード)、(世帯区分)の場合
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(世帯区分)より、OK
③地域コード=~~ AND 世帯区分=~~ ※順不同
(地域コード)を使うと、世帯区分が索引内で絞れない。(該当する地域コードを持つ行はヒットするが、その世帯区分が今回指定する世帯区分かは索引内ではわからない。)
(世帯区分)を使うと、地域コードが索引内で絞れない。(該当する世帯区分を持つ行はヒットするが、その地域コードが今回指定する地域コードかは索引内ではわからない。)
2.(地域コード)、(地域コード、世帯区分)の場合
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(地域コード、世帯区分)⇒複合インデックスの、第二カラム指定のため、索引は使われない。NG
③地域コード=~~ AND 世帯区分=~~ ※順不同
(地域コード、世帯区分)より、OK
3.(地域コード)、(世帯区分、地域コード)
①地域コード=~~
(地域コード)より、OK
②世帯区分=~~
(世帯区分、地域コード)⇒複合インデックスの、第一カラム指定のため、索引が使われる。指定するのは世帯区分のみのため、ここまでの絞り込みでOK
③地域コード=~~ AND 世帯区分=~~ ※順不同
(世帯区分、地域コード)よりOK
以上より、追加する索引は(世帯区分、地域コード)
※ただし、もし設問で「比較対象住居を索引内で絞り込むようにしたい。」と書かれていなかったら
(地域コード)、(世帯区分)でもよかった?単品の検索はもちろん、ANDでやっても、片方は索引に引っかかるので、索引探索は満たしている。。。?
(この結論に辿り着くのに、6,7時間もかかってしまった。。多分二度と間違えないような気がする。)
2021.09.19 20:51
おのでらさんさん(No.4)
同じ問題を解いていて、同じ状況に陥りました。
とっても、役に立ちました。
ありがとう
とっても、役に立ちました。
ありがとう
2021.09.19 22:12
その他のスレッド
»[0233] R2午後2問2設問1(2) 投稿数:6»[0232] H29 午後2 問2(1)e 広域得意先の属性名に 投稿数:3
»[0231] h24 pm1 問1 設問3の(1)のオについて 投稿数:4