ツリー構造のように構築された地理的構造を説明するテーブルがあります。列1は「国」、列2には「地域1」と呼ばれる最大の行政区域が含まれ、「地域2」列には地域1の子が含まれます。
したがって、この
r
/ | \
1 2 3
/ | \ / | \ / | \
11 12 13 21 22 23 31 32 33
異なる組み合わせごとに次のように表されます。
cntry| r1 | r2
------------------
r | 1 | 11
r | 1 | 12
r | 1 | 13
r | 2 | 21
r | 2 | 22
r | 2 | 23
r | 3 | 31
r | 3 | 32
r | 3 | 33
さらに、各リーフ ノードには追加情報が含まれており、複数の行にまたがることがあります。郵便番号など。したがって、テーブルは実際には次のようになります。
cntry| r1 | r2 | zip |
--------------------------|
r | 1 | 11 | a |
r | 1 | 11 | aa |
r | 1 | 11 | aaa |
r | 1 | 11 | aaaa|
r | 1 | 12 | b |
r | 1 | 13 | c |
r | 1 | 13 | cc |
r | 1 | 13 | ccc |
r | 2 | 21 | d |
r | 2 | 22 | e |
r | 2 | 22 | ee |
r | 2 | 23 | f |
r | 3 | 31 | g |
r | 3 | 31 | gg |
r | 3 | 31 | ggg |
r | 3 | 32 | h |
r | 3 | 33 | i |
現在、実際のテーブルには約 200 万行が含まれており、場所名の列には多くのテキストが含まれています。郵便番号だけが新しい情報である追加の行には、多くの重複した情報があります。帯域幅を占有し、低速です。
cntry、r1、r2を個別に順序付けて選択するクエリを作成できますが、zip行は各個別の行に続きnull
、他の列にはありますか? したがって、選択の結果は次のようになります。
cntry| r1 | r2 | zip |
--------------------------|
r | 1 | 11 | a |
NULL| NULL | NULL | aa |
NULL| NULL | NULL | aaa |
NULL| NULL | NULL | aaaa|
r | 1 | 12 | b |
r | 1 | 13 | c |
NULL| NULL | NULL | cc |
NULL| NULL | NULL | ccc |
r | 2 | 21 | d |
r | 2 | 22 | e |
NULL| NULL | NULL | ee |
r | 2 | 23 | f |
r | 3 | 31 | g |
NULL| NULL | NULL | gg |
NULL| NULL | NULL | ggg |
r | 3 | 32 | h |
r | 3 | 33 | i |