2.5 表的索引 1. 基本概念 記錄的順序 : 物理順序:即表中記錄的存儲順序。用記錄號表示。 邏輯順序:表打開后被使用時(shí)記錄的處理順序。 索 引: 指按表文件中某個(gè)關(guān)鍵字段或表達(dá)式建立記錄的邏輯順序。它是由一系列記錄號組成的一個(gè)列表,提供對數(shù)據(jù)的快速訪問。索引不改變表中記錄的物理順序。表文件中的記錄被修改或刪除時(shí),索引文件可自動(dòng)更新。 索引關(guān)鍵字(索引表達(dá)式):用來建立索引的一個(gè)字段或字段表達(dá)式。 注意:1)用多個(gè)字段建立索引表達(dá)式時(shí),表達(dá)式的計(jì)算結(jié)果將影響索引的結(jié)果; 2)不同類型字段構(gòu)成一個(gè)表達(dá)式時(shí),必須轉(zhuǎn)換數(shù)據(jù)類型。 索引標(biāo)識(索引名): 即索引關(guān)鍵字的名稱。必須以下劃線、字母或漢字開頭,且不可超過10個(gè)字。 索引類型:主索引、候選索引、普通索引、唯一索引。 主索引: 組成主索引關(guān)鍵字的字段或表達(dá)式,在表的所有記錄中不能有重復(fù)的值。主索引只適用于數(shù)據(jù)庫表的結(jié)構(gòu)復(fù)合索引中。自由表中不可以建立主索引;數(shù)據(jù)庫中的每個(gè)表可以且只能建立一個(gè)主索引。 候選索引: 在指定的關(guān)鍵字段或表達(dá)式中不允許有重復(fù)值的索引。在數(shù)據(jù)庫表和自由表中均可為每個(gè)表建立多個(gè)候選索引。 普通索引: 也可以決定記錄的處理順序,但是允許字段中出現(xiàn)重復(fù)值。在一個(gè)表中可以加入多個(gè)普通索引。 唯一索引: 參加索引的關(guān)鍵字段或表達(dá)式在表中可以有重復(fù)值,但在索引對照表中,具有重復(fù)值的記錄僅存儲其中的第一個(gè)。 2. 索引的作用 用途 采用的索引類型 排序記錄,以便顯示、查詢或打印 使用普通索引、候選索引或主索引 在字段中控制重復(fù)值的輸入并對記錄排序 對數(shù)據(jù)庫表使用主索引或候選索引,對自由表使用候選索引 準(zhǔn)備設(shè)置表關(guān)系 依據(jù)表在關(guān)系中所起的作用,使用普通索引、主索引或候選索引 3.索引文件的種類 索引文件種類 特征 關(guān)鍵字?jǐn)?shù)目 限制 結(jié)構(gòu)復(fù)合索引文件 .CDX 使用和表文件名相同的基本名,隨表的打開自動(dòng)打開。可以看成表結(jié)構(gòu)的一部分。 多關(guān)鍵字表達(dá)式,稱為標(biāo)識。 有效表達(dá)式限制在 240 個(gè)字符之內(nèi)。 非結(jié)構(gòu)復(fù)合索引文件 .CDX 必須明確地打開,使用和表名不同的基本名。其中不能創(chuàng)建主索引 多關(guān)鍵字表達(dá)式,稱為標(biāo)識。 有效表達(dá)式限制在 符之240 個(gè)字內(nèi)。 獨(dú)立索引文件 .IDX 必須明確地打開,文件的基本名由用戶定義。一般作為臨時(shí)索引文件。 單關(guān)鍵字表達(dá)式。 有效表達(dá)式限制在 100 個(gè)字符之內(nèi)。 結(jié)構(gòu)復(fù)合索引文件(擴(kuò)展名為.CDX)的特點(diǎn): .在創(chuàng)建索引標(biāo)識時(shí)自動(dòng)創(chuàng)建。 .在打開表時(shí)自動(dòng)打開。 .在同一索引文件中能包含多個(gè)排序方案,或索引關(guān)鍵字。 .在添加、更改或刪除記錄時(shí)自動(dòng)維護(hù)。 4. 創(chuàng)建結(jié)構(gòu)復(fù)合索引 VFP中創(chuàng)建索引文件有兩種方式:表設(shè)計(jì)器方式和命令方式。 (1)表設(shè)計(jì)器方式 打開表文件 →從顯示菜單中選擇表設(shè)計(jì)器 → 在表設(shè)計(jì)器中單擊索引 → 輸入索引名并選擇索引類型 → 選擇索引的方向(按升序或降序排列記錄) → 在表達(dá)式框中輸入作為排序依據(jù)的索引關(guān)鍵字 → 在篩選框中輸入篩選表達(dá)式 → 單擊確定,完畢。 (2) 命令方式 命令 功能 INDEX ON <索引關(guān)鍵字段> TAG <索引標(biāo)識>[FOR 條件 ] [ASCENDING | DESCENDING] [CANDIDATE | UNIQUE] 用INDEX ON 命令建立一個(gè)索引文件 ALTER TABLE <表名> ADD PRIMARY KEY <關(guān)鍵字段名> TAG <索引標(biāo)識名> 用SQL命令創(chuàng)建主索引 ALTER TABLE <表名> ADD UNIQUE <關(guān)鍵字段名>TAG <索引標(biāo)識名> 用SQL命令創(chuàng)建候選索引 注意:1)備注型字段和通用型字段不能作為索引關(guān)鍵字段; 2)不要建立無用的索引,以免降低系統(tǒng)性能; 3)及時(shí)清理已無用索引標(biāo)識,提高系統(tǒng)效率。 4)在復(fù)合索引的多個(gè)索引中,某一時(shí)刻只有一個(gè)索引對表起作用。 5. 索引的修改和刪除 修改: 打開表設(shè)計(jì)器,在索引對話框中進(jìn)行所需修改; 或 用命令重新建立一個(gè)相同標(biāo)識名而索引表達(dá)式不同的索引。 刪除: 打開表設(shè)計(jì)器,在索引對話框中刪除不需要的索引標(biāo)識即可; 或 用命令: DELETE TAG ALL | 索引標(biāo)識1 [, 索引標(biāo)識2 ] … 刪除不需要的索引標(biāo)識,ALL表示全部標(biāo)識。 6. 索引的使用 功能 命令格式 打開表的同時(shí)指定主控索引 USE <表名> ORDER <標(biāo)識名> 為已打開的表確定主控索引 SET ORDER TO <標(biāo)識名> [ASCENDING | DESCENDING] ] 搜索某張已建立索引的表 FIND <表達(dá)式> 搜索表中首次出現(xiàn)的記錄 SEEK <表達(dá)式> [ <索引標(biāo)識名>] SEEK <表達(dá)式> |
|