INDEX 命令
建立索引檔案,以邏輯順序顯示和存取數據表記錄。
語法
INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]
[FOR lExpression]
[COMPACT]
[ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE]
[ADDITIVE]
引數
eExpression
指定可包含目前數據表中欄位名稱的索引表示式。 根據索引表達式的索引鍵會在數據表中每個記錄的索引檔中建立。 Visual FoxPro 會使用這些索引鍵來顯示和存取數據表中的記錄。
注意
雖然不建議, 但 eExpression 也可以是記憶體變數、陣列元素,或是另一個工作區域中數據表的欄位或字段表達式。 備忘欄位不能單獨用於索引檔案表達式中;它們必須與其他字元表達式結合。 如果您存取索引,其中包含已不存在或無法找到的變數或欄位,Visual FoxPro 會產生錯誤訊息。
如果您嘗試使用長度變化的索引鍵來建置索引,索引鍵會以空格填補。 Visual FoxPro 不支援可變長度索引鍵。
可以建立長度為零的索引鍵。 例如,當索引表示式是空備忘欄位的子字串時,就會建立零長度索引鍵。 零長度索引鍵會產生錯誤訊息。 當 Visual FoxPro 建立索引時,它會評估數據表中第一筆記錄中的欄位。 如果欄位是空的,可能需要在第一筆記錄的欄位中輸入一些暫存數據,以防止長度為 0 的索引鍵。
TO IDXFileName
建立 .idx 索引檔。 索引檔案會提供默認擴展名 .idx。
TAG TagName[OF CDXFileName]
建立複合索引檔案。 複合索引檔案是單一索引檔案,由) 索引專案 (任意數目的個別標籤所組成。 每個標記都是以其唯一標記名稱來識別。 卷標名稱的開頭必須是字母或底線,而且可以包含最多10個字母、數位或底線的任何組合。 複合索引檔案中的標籤數量只受限於可用的記憶體和磁碟空間。
多項目複合索引檔案一律會壓縮。 建立複合索引檔案時,不需要包含 COMPACT。 複合索引檔的名稱會提供 .cdx 擴展名。
可以建立兩種類型的複合索引檔案:結構化和非結構。
結構化複合索引檔案您可以排除選擇性的 OF CDXFileName 子句,以使用 TAG TagName 建立結構化複合索引檔案。 結構複合索引檔案一律具有與數據表相同的基底名稱,並在開啟數據表時自動開啟。
非結構複合索引檔案您可以在 TAG TagName 之後加入 OF CDXFileName,以建立非結構複合索引檔案。 不同於結構化複合索引檔案,非結構複合索引檔案必須在USE中使用INDEX子句明確開啟。
如果已建立並開啟複合索引檔案,則發出具有 TAGTagName 的INDEX會將標記新增至複合索引檔案。
FOR lExpression
指定條件,其中只有滿足篩選表達式 lExpression 的記錄可供顯示和存取;索引鍵只會針對符合篩選表達式的記錄,在索引檔中建立索引鍵。
Visual FoxPro FoxPro Foxmore 技術優化 INDEX ...如果 lExpression 是可優化表達式,則 FOR lExpression 命令。 為了獲得最佳效能,請在 FOR 子句中使用可優化表達式。
緊湊
建立精簡的 .idx 檔案。
上升
指定 .cdx 檔案的遞增順序。 根據預設,.cdx 標籤會以遞增順序建立。 (您可以加入 ASCENDING 作為索引檔 order.) 數據表可以反向編製索引,方法是包含 DESCENDING。
降
指定 .cdx 檔案的遞減順序。 建立 .idx 索引檔時,您無法包含 DESCENDING。
UNIQUE
指定只有遇到特定索引鍵值的第一筆記錄會包含在 .idx 檔案或 .cdx 標記中。 UNIQUE 可用來防止顯示或存取重複的記錄。 所有以重複索引鍵新增的記錄都會從索引檔中排除。 在發出 INDEX 或 REINDEX 之前,使用 INDEX 的 UNIQUE 選項與執行 SET UNIQUE ON 相同。
當 UNIQUE 索引或索引標籤為使用中且重複的記錄會以變更索引鍵的方式變更時,索引或索引標籤會更新。 不過,使用 REINDEX 重新編制檔案索引之前,無法存取或顯示具有原始索引鍵的下一個重複記錄。
候選人
建立候選結構索引標籤。 只有在建立結構化索引標籤時,才能包含 CANDIDATE 關鍵詞;否則,Visual FoxPro 會產生錯誤訊息。
候選索引標籤可防止在索引表達式 eExpression 中指定的欄位或欄位組合中重複的值。 候選詞彙是指索引的類型;因為候選索引會防止重複的值,所以它們會限定為「候選」成為主要索引。
如果您為欄位或已包含重複值的欄位組合建立候選索引標籤,Visual FoxPro 會產生錯誤。
添加劑
保留開啟任何先前開啟的索引檔案。 如果您在為具有 INDEX 的數據表建立索引檔案或檔案時省略 ADDITIVE 子句,則任何先前開啟的索引檔案 (,但結構複合索引) 除外。
備註
數據表中具有索引檔案的記錄會依索引表示式所指定的順序顯示和存取。 數據表中記錄的實體順序不會由索引檔變更。
索引類型
Visual FoxPro 可讓您建立兩種類型的索引檔案:
複合 .cdx 索引檔案,其中包含多個稱為標記的索引專案
包含一個索引專案的 .idx 索引檔案
您也可以建立結構化複合索引檔案,此檔案會自動與數據表一起開啟。
注意
因為結構複合索引檔案會在數據表開啟時自動開啟,所以它們是慣用的索引類型。
包含 COMPACT 以建立精簡的 .idx 索引檔案。 複合索引檔案一律會壓縮。
索引順序和更新
只有一個索引檔案 (主要索引檔) 或標記, (主要標記) 控制數據表顯示或存取的順序。 某些命令 (SEEK,例如,) 使用主要索引檔案或標籤來搜尋記錄。 不過,所有開啟的 .idx 和 .cdx 索引檔案都會隨著數據表的變更而更新。
使用者定義的函式
雖然索引表示式可以包含使用者定義的函數,但您不應該在索引運算式中使用用戶定義的函數。 索引表達式中的使用者定義函式會增加建立或更新索引所需的時間。 此外,當使用者定義函數用於索引表達式時,可能不會發生索引更新。
如果您在索引表示式中使用使用者定義函數,Visual FoxPro 必須能夠找出使用者定義函數。 當 Visual FoxPro 建立索引時,索引表示式會儲存在索引檔案中,但索引表達式中只會包含使用者定義函數的參考。
另請參閱
ALTER TABLE - SQL 命令
DELETE TAG 命令
SET COLLATE 命令
SET UNIQUE 命令