[pgsql-jp: 27151] Re: 見積り表領域と

sugita @ sra.co.jp sugita @ sra.co.jp
2002年 8月 26日 (月) 12:34:32 JST


  杉田です。

From: "sasaki" <GSP05271 @ nifty.com>
Date: Mon, 26 Aug 2002 07:58:19 +0900 (JST)

;;; 単インデックス作成する場合でも、下記のように複数プライマリーキー存在する場合、
;;; プライマリーキーの足し算をすればよろしいでしょうか?

  そうなりまするアラインメントを考慮して、

    8 + 12 (char(6)) + 12 (char(6)) + 8 (char(3)) = 40 

です。

;;; 例:下記三つのプライマリーキーで1つのインデックスを作成する時。
;;;   char code(6) プライマリーキー  sizeof(IndexTupleData) +6  
;;;   char name(6) プライマリーキー  sizeof(IndexTupleData) +6
;;;   char age(3) プライマリーキー  sizeof(IndexTupleData) +3
;;;   time  timestamp 
;;; 
;;; また、キーの長さが3,7の場合、sizeof(IndexTupleData)がいくつになるのでしょうか
;;; ?

  固定です。

;;; 手元にソースがないので、申しわけありませんがお願いします。

  ソースは、必ず手元に置くべきですよ。

;;; 上記は単インデックスの場合ですが、複数インデックスを作成される時はどうなるので
;;; しょうか?

  pg_filedump を入手されて試すのが早いですよ。

;;; 例1:二つのプライマリーキーで1つのインデックス、1つのユニークキーで
;;;   1つのインデックスを作成する時。
;;;   char code(6) プライマリーキー
;;;     char name(6) プライマリーキー
;;;     char age(30) ユニークキー
;;;     time timestamp;

    char code(6) プライマリーキー
    char name(6) プライマリーキー

と

    char age(3) ユニークキー (30 は、3 の間違い?)

に分けて、2 つのインデックスファイルができる他は、今までと同じです。

;;; 例2:1つのプライマリーキーで1つのインデックス、3つのキーで1つのインデック
;;; ス、
;;;    2つのキーで1つのインデックス作成する時。
;;;   int num;       プライマリーキー
;;;     char code(6); インデックス1作成キー
;;;     char name(6); インデックス1作成キー
;;;     char age(3);  インデックス1作成キー
;;;     char cli(6);  インデックス2作成キー
;;;     char ser(6);  インデックス2作成キー

  こちらも、インデックス1 とインデックス2 に分けて、今までと同じです。


Kenji Sugita




pgsql-jp メーリングリストの案内