索引文件对于改善数据查询速度有着举足轻重的作用,充分使用索引文件可以极大改善数据库应用程序的性能,这一点恐怕是难以否认的.
在应用过程中,用户的查询条件可能是多种多样的,如果能根据用户查询建立和选择索引,对于保证应用程序的性能,无疑是很有帮助的.
另外,由于停电等意外事故很容易造成数据库中的索引文件未及时更新甚至于损坏,此时如果应用程序再出几个错误信息,无疑将使用户的处境雪上加霜.
因而,动态维护数据库索引文件,将使你的数据库应用程序更有稳定性和可靠性.笔者将以Delphi编程中常用的Paradox数据库为例,介绍数据库索引文件的动态维护.
Paradox 数 据 表 索 引 分 为 主 索 引(Primary Index) 即 关 键 字(Primary Key) 索 引 和 次 索 引(Secondary Index), 其 中 主 索 引 对 应.PX 文 件, 次 索 引 对 应.XG* 和.YG* 文 件.
一. 创 建 表 索 引
(1) 用Table.AddIndex 来 实 现
方 法:AddIndex( IndexName,FieldNames,Options )
其 中:( 详 见Delphi 帮 助)
IndexName: 索 引 名 称, 仅 在 指 定 次 索 引 时 有 作 用.
FieldNames: 索 引 域, 可 指 定 多 个 域, 各 域 之 间 用 分 号 隔 开, 如Field1;Field2;Field3
Options: 索 引 选 项, 可 为[ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression]
其 中:
ixPrimary : 建 立 的 索 引 为 主 索 引( 不 适 用 于dBase 数 据 表).
ixUnique : 不 允 许 重 复 值 的 索 引.
ixDescending: 按 降 序 索 引.
ixCaseInsensitive: 索 引 排 序 时 按 忽 略 大 小 写( 不 适 用 于dBase 数 据 表).
ixExpression: 建 立 表 达 式 索 引( 适 用 于Delphi3.0, 仅 适 用 于dBase 数 据 表).
ixNonMaintained: 是 否 不 需 要BDE 自 动 维 护( 适 用 于Delphi1.0).
下 面 是 一 个 例 子:
假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录d:\mynote 下, 现 建 立 一 个 主 索 引( 索 引 域 为 编 号ID) 和 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex).
with table1 do
begin
close;
DatabaseName := d:\MyNote;
TableName := MyComm.DB;
Open;
{建立主索引 }
AddIndex(,ID,[ixPrimary]);
{建立次索引 }
AddIndex(NameIndex,ID;Name,[]);
close;
end;
(2)用SQL来实现
对Paradox数据表来说,用SQL只能建立次索引.
在SQL语法中,用来建立索引的语句是:
Create Index IndexName On TableName
(IndexField1,IndexField2,..)
其中:
IndexName为一个次索引的名称,如MySecIndex1等.






