SET OPTIMIZE 命 令
设置是否使用
Rushmore 优化技术
语 法
SET OPTIMIZE ON | OFF
参 数 描 述
O N


默
认 值 启 用 Rushmore 优 化
OFF
禁 止
Rushmore 优 化
说 明




Visual
FoxPro 使用一种叫 Rushmore 的技术来优化数据的检索 支持 FOR
子句的表命令可以使用 Rushmore 技术提高性能 当发出一条可优化命令时
Rushmore 决定哪些记录与 FOR 条件相匹配 发出的命令是在表中与 Rushmore
记录集相匹配的记录上执行的





很少有情况需要禁止
Rushmore 优化 如果一条可从 Rushmore
优化中受益的命令修改了查询索引关键字时 Rushmore 记录集可能变得过时
这时 为确保从表中得到最新的信息 应 禁 止 Rushmore 优化



可用
SET OPTIMIZE 在全局范围内启用或禁止 Rushmore 技术 每条使用 Rushmore
|
的命令都有一个 下 面 的 命 令 可 用 命 令 |
NOOPTIMIZE 子句 可以用它来禁止 Rushmore Rushmore 来 优 化 其 运 行 性 能 |
优化开关 |
|---|---|---|
|
AVERAGE |
BLANK |
BROWSE |
|
CALCULATE |
CHANGE |
COPY TO |
|
COPY TO ARRAY |
COUNT |
DELETE |
|
DISPLAY |
EDIT |
EXPORT |
|
INDEX |
LABEL |
LIST |
|
LOCATE |
RECALL |
REPLACE |
|
REPLACE FROM ARRAY SORT 请 参 阅 |
REPORT SUM |
SCAN TOTAL |
|---|---|---|
|
INDEX , SET ORDER |
||
|
S E T O R D E R 命 令 |
指定表的主控索引文件或标识
语 法
SET ORDER TO
[ nIndexNumber | IDXIndexFileName | [TAG] TagName [OF
CDXFileNam e ]
[IN n W orkArea | cTableAlias ] [ASCENDING | DESCENDING]]
参 数 描 述

nIndexNumbe
r
|
指 定 主 控 索 引 文 件 或 标 识 的 编 号 |
nIndexNumber 指 的 是 在 |
USE 或 SET |
|---|---|---|
|
INDEX 中 列 出 索 引 文 件 的 顺 序 号 |
首 先 按 它 们 在 USE 或 |
SET INDEX 中 |





出
现 的 顺 序 为 打 开 的 .ID X 文 件 编 号 随 后 按 创 建 顺 序 为 结
构 .CDX 文件 中 的 索 引 标 识 如 果 存 在 的 话
编 号 最 后 按 创 建 顺 序 为 所 有 打 开 的 独立 的 .CDX 文 件 中 的
索 引 标 识 编 号




下面示例说明了不同索引文件类型和标识的编号方式
文件名只是为了说明问题 并不需要真正存在 表 video.dbf
打开时带有三个索引 (title.idx, costs.cdx 和 rating.idx)
使用下面命令将其在第一个工作区中打开
USE video INDEX title.idx, costs.cdx, rating.idx IN 1
video
表有一个结构复合索引文件 (video.cdx) 其中有两个索引标识 (NUMBERSOLD 和


YEARSOLD)
打开 video 时 此结构 .CDX 文件自动打开


由于
.IDX 文件首先被编号 因此发出命令 SET ORDER TO 1 将使 title.idx
成为主控索引 而发出 SET ORDER TO 2 则使 rating.idx 成为主控索引
SET ORDER TO 1
主索引文件 : C:\FOX30\TITLE.IDX SET ORDER TO 2
主索引文件 : C:\FOX30\RATING.IDX
其次对
video.cdx 中的索引标识进行编号
SET ORDER TO 3
主索引文件 : C:\FOX30\VIDEO.CDX 标识 : NUMBERSOLD SET ORDER TO 4
主索引文件 : C:\FOX30\VIDEO.CDX 标识 : YEARSOLD
独立文件
costs.cdx 中的索引标识最后被编号
SET ORDER TO 5
主索引文件 : C:\FOX30\COSTS.CDX 标识 : RENTALCOST SET ORDER TO 6
主索引文件 : C:\FOX30\COSTS.CDX 标识 : BUYCOST







nIndexNumber
也 可 以 是 0 如 果 发 出 SET ORDER TO 0 命 令 则 所 有 索 引文 件 仍
保 持 打 开 并 且 在 增 加 删 除 或 修 改 记 录 时 更 新 但 是 表 中
所 有 记录 的 显 示 和 访 问 顺 序 是 记 录 编 号 顺 序 而 不 是 索 引
顺 序 不 带 其 他 参 数 的 SET ORDER TO 命 令 与 SET ORDER TO 0 命 令
完 全 一 样

如
果 nIndexNumber 大 于 .ID X 文 件 和 .CDX 文 件 的 索 引 标 识 数 则
Visual FoxPro 产 生 错 误 信 息
IDXIndexFileName
指 定
作 为 主 控 索 引 文 件 的 .ID X 文 件
[TAG] TagName [OF CDXFileName]

指
定 .CDX 文 件 中 的 一 个 标 识 作 为 主 控 索 引 标 识 标 识 名 可 以
来 自 结构 .CDX 文 件 或 任 何 打 开 的 独 立 .CDX 文 件

如果在各打开的独立
.CDX 文件中存在相同的标识名 应使用 OF CDXFileName 来指定包含此标识的
.CDX 文件

如
果 .ID X 文 件 和 标 识 名 重 复 .ID X 文 件 优 先
IN nWorkArea | cTableAlias
为 在
非 当 前 选 定 工 作 区 中 打 开 的 表 指 定 主 控 索 引 文 件 或 索
引 标 识 nWorkArea

指
定 工 作 区 编 号 cTableAlias 指 定 表 的 别 名
ASCENDING | DESCENDING

以
升 序 或 降 序 显 示 或 访 问 表 记 录 使 用 ASCENDING 或 DESCENDING
不会 改 变 索 引 文 件 或 索 引 标 识
说 明










一个表可以同时打开多个索引文件
但是 只有一个单索引 (.IDX) 文件 主控索引文件 或一个来自复合索引 (.CDX)
文件的索引标识 主控标识 决定表中记录的显示和访问顺序 可 用 SET ORDER
来指定主控索引文件或标识 有些命令 例如SEEK
使用主控索引或标识来查找记录




可以在
USE 命令中包含 INDEX 子句随表打开索引文件 如果一个表有相关的结 构 .CDX
文件 这个文件会随着表的打开而自动打开 在一个表被打开以后 可以使用 SET
INDEX 命令为这个表打开或关闭索引文件

默认情况下
SET ORDER 为当前工作区中打开的表指定主控索引或主控标识
请 参 阅
INDEX , ORDER ( ) , SET INDEX
