2003年 9月 1日 | 「INDEX-only」 と ヌル・キー | >> 目次 (テーマ ごと) |
ヌル・キー とは、値が ヌル (HEX '00') である キー のことをいう。
ただし、ヌル・キー が B ツリーのなかに生成されないことが前提である。 市販されている RDB のなかには、ヌル・キー を B ツリー から排除する プロダクト もあれば、排除しない プロダクト もあるので、それぞれの プロダクト ごとに調べてほしい。 [ 事例 ]
(1) 以下の 2つの テーブル を例にする。 (2) 「受注」の データ 件数は 6,000,000件である。
(3) 契約されていない受注 データ を、数量の多い順に、以下の情報を表示する。 なお、顧客に関して、顧客名称、電話番号や住所の情報を表示するのなら、顧客番号を使って、顧客 テーブル を join すればよい。 |
受注 (仮契約) | 契約 | ||||||
受注NO | 顧客NO(R) | 受注日 | 受注数 | 契約NO | 受注NO(R) | 契約日 | |
001 | 01 | 07-28 | 100 | 0001 | 001 | 08-29 | |
002 | 05 | 07-28 | 30 | 0002 | 005 | 08-29 | |
003 | 01 | 07-29 | 200 | ||||
004 | 03 | 07-29 | 150 | ||||
005 | 10 | 07-29 | 45 |
データ 構造を変更する前提であれば、「受注」 テーブル のなかに、「未済・済み」 区分 コード を用意すればよい──言い換えれば、サブセット を生成すればよい。 |
受注 (仮契約) | ||||
受注NO | 顧客NO(R) | 受注日 | 受注数 | 未済・済み |
001 | 01 | 07-28 | 100 | 1 |
002 | 05 | 07-28 | 30 | 0 |
003 | 01 | 07-29 | 200 | 0 |
004 | 03 | 07-29 | 150 | 0 |
005 | 10 | 07-29 | 45 | 1 |
未済・済み (0) + 受注数 (降順) + 顧客番号
コード 体系を変更できないのであれば、「未済・済み」 区分 コード を「未済・済み」 FLAG として、物理 テーブル のなかのみで扱い、エンドユーザ に対して表示しないようにすればよい。 |
ヌル・キー | 受注 (仮契約) | ||||
受注数 | 顧客NO | 受注NO | 顧客NO(R) | 受注日 | 受注数 |
001 | 01 | 07-28 | 100 | ||
30 | 05 | 002 | 05 | 07-28 | 30 |
200 | 01 | 003 | 01 | 07-29 | 200 |
150 | 03 | 004 | 03 | 07-29 | 150 |
005 | 10 | 07-29 | 45 |
受注数 (降順) + 顧客番号 「INDEX-only」 と ヌル・キー の違いは、「INDEX-only」 では、6,000,000件の アクセス・パス を B ツリー のなかに生成するが、ヌル・キー では、(ヌル 値の キー は B ツリー から排除されて) 値を収納している キー のみが生成される、という点にある。
どちらのやりかたが効果的・効率的であるかという点は、それぞれの具体的な適用例のなかで判断してほしい。 |
<< もどる | ベーシックス | すすむ >> | |
データベースの基礎知識 |