建立索引檔案,以邏輯順序顯示及存取數據表記錄。
語法
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子句明確開啟非結構複合索引檔案。
如果已建立並開啟複合索引檔案,使用 TAG TagName 發出INDEX會將標籤新增至複合索引檔案。
FOR lExpression
指定條件,其中只有滿足篩選表達式 lExpression 的記錄可供顯示和存取;索引鍵只會針對符合篩選表達式的記錄,在索引檔中建立索引鍵。
Visual FoxPro Rushmore 技術優化 INDEX...如果 lExpression 是可優化表達式,則 FOR lExpression 命令。 為了獲得最佳效能,請在 FOR 子句中使用可優化表達式。
緊湊
建立精簡的 .idx 檔案。
上升
指定 .cdx 檔案的遞增順序。 根據預設,.cdx 標記會以遞增順序建立。 (您可以包含 ASCENDING 作為索引檔順序的提醒。您可以藉由包含 DESCENDING,以反向順序編製數據表的索引。
降
指定 .cdx 檔案的遞減順序。 建立 .idx 索引檔時,您無法包含 DESCENDING。
獨特
指定只有遇到特定索引鍵值的第一筆記錄會包含在 .idx 檔案或 .cdx 標記中。 UNIQUE 可用來防止顯示或存取重複的記錄。 以重複索引鍵新增的所有記錄都會從索引檔中排除。 使用 INDEX 的 UNIQUE 選項與在發出 INDEX 或 REINDEX 之前執行 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 命令