选择显示字体大小

用dephi程序维护paradox 数据表的索引

  索引文件对于改善数据查询速度有着举足轻重的作用,充分使用索引文件可以极大改善数据库应用程序的性能,这一点恐怕是难以否认的.

  在应用过程中,用户的查询条件可能是多种多样的,如果能根据用户查询建立和选择索引,对于保证应用程序的性能,无疑是很有帮助的.

  另外,由于停电等意外事故很容易造成数据库中的索引文件未及时更新甚至于损坏,此时如果应用程序再出几个错误信息,无疑将使用户的处境雪上加霜.

  因而,动态维护数据库索引文件,将使你的数据库应用程序更有稳定性和可靠性.笔者将以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等.
tablename为对应数据表的名称,如mytable等.
tablename后面为索引域列表,所有索引域有圆括号括起来,
索引域之间用逗号隔开.
 

  下 面 是 一 个 例 子:

  假 设 有 一 个 存 放 通 讯 录 数 据 表mycomm.db( 类 型 为paradox) 存 放 于 本 地 目 录

  d:\mynote 下, 现 建 立 一 个 次 索 引( 索 引 域 为 编 号id 和 姓 名name, 索 引 名 称 为nameindex).

with query1 do
begin
close;
databasename := d:\mynote;

{建立次索引nameindex}
sql.clear;
sql.add( create index nameindex on mycomm(id,name) );
execsql;
end;
 

二. 删 除 表 索 引
  (1) 用table.deleteindex 来 实 现
  deleteindex 只 能 删 除 次 索 引 名 称.
  方 法:deleteindex( indexname )
  其 中:( 详 见delphi 帮 助)
  indexname: 次 索 引 名 称.

  下 面 是 一 个 例 子:

  假 设 有 一 个 存 放 通 讯 录 数 据 表mycomm.db( 类 型 为paradox) 存 放 于 本 地 目 录

  d:\mynote 下, 现 有 一 个 次 索 引( 索 引 域 为 编 号id 和 姓 名name, 索 引 名 称 为nameindex), 将 删 除 之.

with table1 do
begin
close;
exclusive := true;
databasename := d:\mynote;
tablename := mycomm.db;
open;

{删除次索引}
deleteindex(nameindex);

close;
end;
 

  (2) 用sql 来 实 现
  在sql 语 法 中, 用 来 删 除 索 引 的 语 句 是:
  drop index tablename.indexname
  要 删 除 次 索 引 时,indexname 为 一 个 次 索 引 的 名 称, 如mytable.mysecindex1 等.
  要 删 除 主 索 引 时,indexname 为primary, 如mytable.primary; 值 得 注 意 的 是, 在 删 除 主 索 引 成 功 后, 数 据 表 的 所 有 次 索 引 也 自 动 删 除.

  下 面 是 一 个 例 子:
  假 设 有 一 个 存 放 通 讯 录 数 据 表mycomm.db( 类 型 为paradox) 存 放 于 本 地 目 录
  d:\mynote 下, 已 定 义 一 个 主 索 引( 索 引 域 为 编 号id) 和 一 个 次 索 引( 索 引 域 为 编 号id 和 姓 名name, 索 引 名 称 为nameindex).
  现 在 因 为 索 引 损 坏, 要 删 除 索 引, 以 便 重 新 索 引.

with query1 do
begin
close;
databasename := d:\mynote;

{删除次索引nameindex }
sql.clear;
sql.add( drop index mycomm.nameindex );
execsql;

{删除主索引 }
sql.clear;
sql.add( drop index mycomm.primary );
execsql;
end;
 

三.注意事项:
  (1)在索引更改时,应保证对应的数据表可以以独占方式(exclusive=true) 打开,否则会引起错误.
  (2)上述方法略加修改后,也可用于dbase,oracle等其它数据库的数据表.
  (3)如果需要重新对索引文件进行索引,请参考bde的dbi函数说明:
  regenindex,regenindexes.
  (4)以上程序在delphi3.0下测试通过。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons