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 子句显式打开非结构复合索引文件。

如果已创建并打开复合索引文件,则使用 TAG TagName 发出 INDEX 会将标记添加到复合索引文件。

FOR lExpression
指定仅满足筛选表达式 lExpression 的记录可用于显示和访问的条件;索引键仅在索引文件中为与筛选表达式匹配的记录创建。

Visual FoxPro Rushmore 技术优化索引...FOR lExpression 命令(如果 lExpression 是可优化表达式)。 为获得最佳性能,请在 FOR 子句中使用可优化表达式。

COMPACT
创建一个压缩的 .idx 文件。

上升
指定 .cdx 文件的升序。 默认情况下,.cdx 标记按升序创建。 (可以包含 ASCENDING 作为索引文件顺序的提醒。) 可以通过包括 DESCENDING 来按相反顺序为表编制索引。


指定 .cdx 文件的降序。 创建 .idx 索引文件时,不能包含 DESCENDING。

UNIQUE
指定 .idx 文件或 .cdx 标记中仅包含与特定索引键值相遇的第一条记录。 UNIQUE 可用于防止显示或访问重复记录。 使用重复索引键添加的所有记录将从索引文件中排除。 使用 INDEX 的 UNIQUE 选项与在发出 INDEX 或 REINDEX 之前执行 SET UNIQUE ON 相同。

当 UNIQUE 索引或索引标记处于活动状态,并且重复记录以更改其索引键的方式更改时,索引或索引标记将更新。 但是,在使用 REINDEX 对文件重新编制索引之前,无法访问或显示具有原始索引键的下一个重复记录。

候选人
创建候选结构索引标记。 只有在创建结构索引标记时,才能包含 CANDIDATE 关键字 (keyword) ;否则,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 命令