Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
重建当前工作区 order 列表中的所有 order。
REINDEX [EVAL <lCondition> [EVERY <nRecords>]
EVAL <cbEval> | 以 EVERY <nInterval> 指定的时间间隔评估的代码块。 默认时间间隔为 1,这在制作状态栏或进度条以监控排序进度时非常有用。 <cbEval> 的返回值必须是逻辑值。 如果 <cbEval> 返回 FALSE,索引将停止。 |
EVERY <nInterval> | 数值表达式,用于确定 <cbEval> 的评估次数。 该选项通过间隔评估条件来提高性能,而不是每处理一条记录就评估一次。 如果不指定 EVAL 子句,EVERY 关键字将被忽略。 |
REINDEX 在功能上等同于 DbReindex()。
注意 REINDEX 在重建索引时不会重新创建索引文件头。 因此,如果文件头损坏,REINDEX 也无济于事。 为保证索引的有效性,请务必使用 INDEX ON 代替 REINDEX 来重建损坏的索引文件
下面的示例重新索引了当前工作区中的 order :
USE sales INDEX salesman, territory NEW
REINDEX
此示例使用进度条重新索引:
USE sales INDEX salesman, territory NEW
REINDEX EVAL NtxProgress() EVERY 10
FUNCTION NtxProgress()
LOCAL cComplete := LTRIM(STR((RECNO() / ;
LastRec()) * 100))
@ 23, 00 SAY "Indexing..." + cComplete + "%"
RETURN TRUE
XSharp.RT.DLL
DBCreateIndex(), DbCreateOrder(), DbReindex(), INDEX, PACK, SET INDEX, USE