Provided by: manpages-zh_1.5-1_all bug

NAME

       CREATE INDEX - 定義一虓s索引

SYNOPSIS

       CREATE [ UNIQUE ] INDEX name ON table [ USING method ]
           ( { column | ( expression ) } [ opclass ] [, ...] )
           [ WHERE predicate ]

DESCRIPTIONyz
       CREATE   INDEX   在指定的表上構造一茼W為   index_name   的索引。索引主-
       n用來提高數據庫性能。但是如果不恰當的使用將導P性能的下陛C

        索引的鍵字字段是以字段名的方式聲明的,或者是可選的寫在一荈磟A弧裏-
       悸漯竁F式。 如果索引方式支持多茼r段索引,那麼我怳]可以聲明多茼r段。

        一荅薑犌r段可以是一茖洏峈磲漲瑼漱@茤峖h茼r段的數i行p算的表達式。 整-
       荅S性可用於獲取對基本數據某種變形的快速訪問。  比如,一茼b   upper(col)
       上的函數索引將允許子句 WHERE upper(col) = 'JIM' 使用索引。

       PostgreSQL     為從索引提供    B-tree,R-tree,hash(散列)   和   GiST
       索引方法。 B-tree 索引方法是一 Lehman-Yao 高並發 B-trees  的實  現。R-
       tree    索引方法用    Guttman    的二次分裂算法實現了標準的   R-trees。
       hash(散列)索引方法是 Litwin 的線性散列的一蚢窶{。 使用者也可以定義它-
       怞菑v的索引方法,但這茪u作相當復雜。

        如果出現了      WHERE      子句,則創建一茬﹞嶸薑煄C     部分索引是一-
       茈u包含表的一部分記錄的索引,通常是該表中最讓人感興趣的部分。
       比如,如果你有一茠瞴A裏悼]含已上賬和未上賬的定單,
       未上賬的定單只佔表的一小部分而且這部分是最常用的部分,
       那麼你就可以通過只在這茬﹞應衎堣@荅薑犐荍齔蔗坒遄C              另外一-
       茈i能的用途是用 WHERE 和 UNIQUE 強制一茠磲漪Y茪l集的唯一性。

        在                                                               WHERE
       子句裏用的表達式只能引用下層表的字段(但是它可以使用所有字段,而不僅僅是被索引的字段)。
       目前,子查詢和聚集表達式也不能出現在WHERE裏。

        索引定義裏的所有函數和操作符都必須是immutable,(不變的)也就是說,
       它怐熊痕G必須只能依賴於它-
       怐瑪擗J參數,而決不能依賴任何外部的影響(比如另外一-
       茠磲漱漁e或者當前時間)。   這茯蠽蘀T保該索引的行為是定義完整的。n在一-
       荅薑牏W使用使用者定義函數,請記住在你創建它的時-
       唭漭汝訄O為immutable的函數。

PARAMETERS數
       UNIQUE
              令系統檢測當索引創建時(如果數據已經存在)和每次添加數據時表中是否有-
              契_C 如果插入或更新的|導P契_的記錄時將生成一蚇欞~。

       name          n創建的索引名。這裏不能包含模式名;       索引總是在同一-
              蚍狾﹞之@為其父表創建的。

       table   n索引的表名(可能有模式袡╮^。

       method   用於索引的方法的名字。可選的名字是   btree,   hash,rtree,和
              gist。預設方法是 btree。

       column  表的列/字段名。

       expression
               一荌簼騤茠磲漱@茤峖h茼r段的表達式。                         這-
              茠竁F式通常必須帶著圓括弧包圍寫出,如語法中顯示那樣。
              不過,如果表達式有函數調用的形式,那麼圓括弧可以省略。

       opclass
               一蚚鶬p的操作符表。參閱下文獲取細節。

       predicate
               為一茬﹞嶸薑犎w義約束表達式。

NOTES`N
        參閱    ``Indexes''    獲取有關何時使用索引,何時不使用索引,    以及-
       種情況下是有用的信息。

        目前,只有 B-tree 和 gist 索引方法支持多字段索引。  預設時最多可以聲明
       32   蚆鉿r(這茖謋i以在製作   PostgreSQL   時蚹鵅^。   目前只有  B-tree
       支持唯一索引。

        可以為索引的每茼C/字段聲明一        操作符表。        操作符表標識將-
       n被該索引用於該列/字段的操作符。    例如,    一茈|字節整數的    B-tree
       索引將使用    int4_ops    表;    這蚞犑@符表包括四字節整數的比較函數。
       實際上,該域的數據類型的預設操作符表一般就足夠了。
       某些數據類型有操作符表的鴞]是,它怚i能有多於一茠漲雪N義的順序。
       例如,我拊鼢_數類型排序時有可能以絕對峈怚H實部。                  我-
       怚i以通過為該數據類型定義兩蚞犑@符表,然後在建立索引的時-
       埥嚝雃X適的表來實現。  有關操作符表更多的信息在 ``Operator Classes'' 和
       ``Interfacing Extensions to Indexes'' 裏。

        使用 DROP INDEX [drop_index(7)] 刪除一荅薑煄C

EXAMPLESl
        在表films上的 title字段創建一 B-tree 索引:

       CREATE UNIQUE INDEX title_idx ON films (title);

COMPATIBILITYe性
       CREATE INDEX 是 PostgreSQL 語言擴展。 在 SQL  標準中沒有  CREATE  INDEX
       命令。

者
       Postgresql  <laser@pgsqldb.org>