Provided by:
manpages-zh_1.5-1_all 
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>