ツリー構造のように構築された地理的構造を説明するテーブルがあります。列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   |