DB2數據庫中索引的語法介紹 CREATE INDEX 語句用來為 DB2 Everyplace 表創建索引。 CREATE--INDEX--index-name--ON--table-name。 描述 : INDEX index-name命名索引:ON table-name。 表名:table-name 。命名要對其創建索引的表:column-name 對於索引,列名標識要作為索引鍵一部分的列。每個列名都必須是標識一個表列的未限定名。使用 8 列或更少的列;不能重復列名(SQLSTATE 42711)。每個指定列的長度一定不能超過 1024 字節。 ASC 按列以升序順序排列索引條目。這是缺省值。 DESC按列以降序順序排列索引條目。 LCASE / UCASE LCASE 或 LOWER 函數返回一個字符串,其中所有 SBCS 字符都已轉換為小寫字符。即,字符 A 至 Z 將轉換為字符 a 至 z,而帶有區分標記的字符將轉換為其小寫等效項(如果它們存在的話)。 自變量必須是其值為 CHAR 或 VARCHAR 數據類型的表達式。 該函數的結果的數據類型和長度屬性與自變量的數據類型和長度屬性相同。如果自變量可以為空,則結果可以為空;如果自變量為空,則結果為空值。 確保 EMPLOYEE 表中的列 JOB 的值中的字符將以小寫字符的形式返回。例如: SELECT LCASE(JOB) FROM EMPLOYEE WHERE EMPNO = '000020'; 規則 對於沒有主鍵的表,最多可創建 15 個索引。對於有主鍵的表,最多可創建 14 個索引。 如果嘗試創建與現有索引匹配的索引,則 CREATE INDEX 語句將失敗。在下列情況下,兩個索引描述被認為是重復的: 索引中的列集及其順序與現有索引的列集和順序相同。 排序屬性是相同的。 不能在 CREATE INDEX 語句中使用具有 BLOB 數據類型的列。 注意事項 CREATE INDEX 語句可包含最多 8 列。 DB2 Everyplace 支持索引的雙向掃描。盡管下面兩個索引的定義不同,但它們的作用是相同的。 CREATE INDEX IDX1 ON EMPLOYEE (JOB ASC) CREATE INDEX IDX1 ON EMPLOYEE (JOB DESC) 通常,應在不指定排序方向的情況下創建索引。通常,索引越少,索引維護的成本也就越低。 DB2 Everyplace 支持索引的前綴掃描。考慮以下示例。創建了以下索引。 CREATE INDEX J1 ON T (A, B, C, D, E, F, G, K) 不需要為 T (A,B,C,D) 創建另一索引。 如果該表未包含數據,則 CREATE INDEX 創建索引的描述;在對表插入數據時創建索引條目。 要為髒位索引創建索引,請使用以下示例: CREATE INDEX ON ($dirty) 有關髒位的更多信息,請參閱 ***。 示例 為 EMPLOYEE 表創建名為 JOB_BY_DPT 的索引。按每個部門(WORKDEPT)中的職位(JOB)以升序順序排列索引條目。 CREATE INDEX JOB_BY_DPT ON EMPLOYEE (WORKDEPT, JOB) 注意:在建表的時候可以指定索引的表空間,比如: create table tabname(...) in tabspace index in tabindexspace