APP下载

谈谈索引

2012-10-17鑫,陆

赤峰学院学报·自然科学版 2012年6期
关键词:关键字命令结构

常 鑫,陆 源

(集宁师范学院 数学系,内蒙古 乌兰察布 012000)

谈谈索引

常 鑫,陆 源

(集宁师范学院 数学系,内蒙古 乌兰察布 012000)

在数据库系统中,数据查询是一种实际应用.本文主要讨论Visual FoxPro数据库当中与查询密切相关的索引方法.数据库中提供顺序查询和索引查询两种查询数据的方法,以及VIEW(数据工作期)窗口和RQBE(范例关系查询)窗口两种交互式查询工具.

VisualFoxPro;索引;查询

1 索引的概念

数据库表中记录总是按输入的先后排列的.使用显示命令显示表中记录时,仍按照这个顺序输出,这种顺序称为物理顺序.如果希望以另一种顺序来输出记录,便需对数据库表进行索引.索引不改变记录的物理顺序,而是按某个索引关键字来建立记录的逻辑顺序.索引能起到改变记录输出顺序的作用,还能决定记录的存取顺序.

索引可以将数据库表中的顺序按照某一个或某几个字段的值按逻辑顺序重新排列.索引文件中所有关键字值按升序或降序排列,每个值对应原表的一个记录号,这样便确定了记录的逻辑顺序.

索引以增加一个文件为代价,但文件只包括关键字和记录号两个字段,比被索引的表要小得多.索引起作用后,增删或修改表的记录时索引文件会自动更新,这也是索引应用比较广的原因.

2 索引的种类

2.1 按扩展名分

单索引和复合索引两类索引文件.

2.1.1 单索引文件

单索引文件扩展名为IDX,只包含一个索引,这种类型是为了与FOXBASE+开发的应用程序兼容而保留的.但若将它定义为压缩的,将不能被FOXBASE+使用.

建立单索引文件命令格式:

INDEX ON<索引关键字>TO<单索引文件名> [ADDITIVE][COMPACT][FOR<条件>]

说明:(1)TO使用于建立单索引文件,其主名由<单索引文件名>确定.

(2)该命令默认建立普通索引文件.

(3)COMPACT用来指定单索引文件为压缩的.

(4)记录逻辑顺序默认为升序.

(5)ADDITIVE表示建立本索引文件时并不关闭先前打开的索引文件.

下面通过实例进行说明,在VisualFoxPro数据库开发环境中建立【商品】项目、【商品】数据库其中建立商品表并输入相应记录,以便练习.

【实例1】 建立品名升序、价格降序的单索引文件.

USE 商品表 &&打开表(商品表.dbf)

LIST &&记录按物理顺序排列显示

INDEX ON 品名 TO pinming&& 建立品名升序排列单索引文件(pinming.idx),品名为索引关键字

LIST &&记录按品名升序的逻辑顺序排列显示

INDEX ON -价格 TO jiage && 建立价格升序排列单索引文件(jiage.idx)

LIST &&记录按价格降序排列显示

商品表通过单索引文件pinming与jiage,将原先表中记录的物理顺序按照索引文件的逻辑顺序排列显示.

2.1.2 复合索引文件

复合索引文件扩展名为CDX,复合索引文件允许包含多个索引,每个索引都有一个索引标识,代表一种逻辑顺序.这种索引文件总以压缩方式存储,以便节约存储空间.

复合索引文件又有结构复合索引和非结构(独立)复合索引两种:

(1)定义索引文件时用户没有取名字就是结构复合索引文件,结构复合索引文件的主名与表的主名相同;它随表的打开而打开,随着表的关闭而关闭.在添加、更新或删除记录时还会自动维护,在各类索引文件中,选用它最为省事.

(2)定义索引文件时为它取了名字,则是非结构(独立)复合索引文件,打开非结构索引文件需要使用SETINDEX命令或USE 命令中的INDEX子句,也能随时关闭非结构(独立)复合索引文件.

建复合索引命令格式:

INDEX ON<索引关键字>TAG<索引标识名>[OF<复合索引文件名>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE][FOR<条件>]

说明:(1)该命令用来建立索引文件或增加索引标识.

(2)TAG用于建立复合索引文件或增加索引标识,索引标识由该子句<索引标识名>确定.

(3)该命令默认建立普通索引文件,UNIQUE表示建立唯一索引文件,CANDIDATE表示建立侯选索引文件,但是需要与TAG子句同时使用.

(4)OF选项用来指定非结构(独立)复合索引文件的名字,缺省该选项表示建立结构复合索引文件.

(5)记录逻辑顺序默认为升序,也可用ASCENDING选项表示为升序,DESCENDING选项表示为降序.

(6)ADDITIVE表示建立本索引文件时并不关闭先前打开的索引文件.

【实例2】 为商品表建立一个结构复合索引文件,其中包括三个索引.

(1)记录以价格降序排列.

USE 商品表 &&打开表(商品表.dbf)

INDEX ON 价格 TAG 价格降序 DESCENDING && 建立结构复合索引文件(商品表.CDX),价格为索引关键字,价格降序为索引标识

LIST &&记录按价格降序排列显示

(2)记录以品牌升序排列,品牌相同时则按价格升序排列.

INDEX ON 品牌+STR(价格,7,2)TAG ppsjgs &&增加索引标识(ppsjgs),品牌与价格字段表达式为关键字

LIST &&品牌升序、品牌相同时价格升序排列显示

(3)记录以品牌升序排列,品牌相同时则按价格降序排列.

INDEX ON 品牌+STR(10000-价格,7,2)TAG ppsjgj&&增加索引标识(ppsjgj),品牌与价格字段表达式为关键字

LIST &&品牌升序、品牌相同时价格降序排列显示

商品表通过结构符合索引文件(商品表.CDX)中的三个索引标识(价格降序、ppsjgs、ppsjgj),将原表记录的排列顺序按照索引文件的逻辑顺序排列显示.

2.2 按功能分

索引除了具有建立记录逻辑顺序的作用外,还能控制是否允许相同的索引关键字值在不同记录中重复出现.

下面列出了4种索引功能类型:见表1.

表1

主关键字是能唯一标识记录的索引关键字,它应能排除关键字重复值.

3 索引的使用

3.1 打开和关闭索引文件

命令格式:

SET INDEX TO [<索引文件列表>][ADDITIVE]

功能:打开当前表的一个或多个索引文件,并确定控制索引文件.

说明:(1)<索引文件列表>可包含多个索引文件,索引文件名之间以逗号分隔,表中第一个索引文件作为主控索引文件,该命令常用于打开单索引文件和非结构(独立)复合索引文件.

(2)若缺省所选项,仅使用“SET INDEX TO”,将关闭当前工作区中除结构复合索引外的所有索引文件,同时取消主控索引.

(3)若缺省ADDITIVE选项,则在用本命令打开索引文件时,除结构复合索引文件外的索引文件均被关闭.

(4)命令“use <表名> index <索引文件列表>”也可在打开表的同时打开索引文件,并确定<索引文件列表>中的第一个索引文件为控制索引文件.

提示:(1)若当前仅有一个索引文件被打开,它就成为主控索引文件.索引刚建立时,索引文件为打开状态且成为主控索引文件.若当前已经打开了多个索引文件,可通过SET ORDER命令来确定主控索引文件.

(2)除了结构复合索引能随着表的打开而打开外,其它索引文件必须用命令显示打开.

(3)表关闭时索引文件就随表关闭.

3.2 确定主控索引

复合索引文件建立时,当前建立的索引标识自动成为主控索引.但必须注意,表重新打开时尽管复合索引文件已自动打开,但还须确定主控索引.下面的命令用来确定主控索引,也能确定主控索引文件.

命令格式:

SET ORDER TO [<数值表达式>|<单索引文件名>|[TAG]<索引标识>[ASCENDING][DESCENDING]]

说明:(1)<数值表达式>表示已经打开索引的序号,该序号用来指定主控索引文件或主控索引.系统先为各单索引文件编号,所以结构复合索引文件的序号比单索引文件大.

(2)<单索引文件名>指定该单索引文件为主控索引文件.

(3)<索引标识>指定该索引标识为主控索引.

(4)"SETORDER TO"或者 "SETORDER TO 0"命令取消主控索引文件及主控索引,表中记录按物理顺序输出.

4 删除索引

4.1 删除索引文件

若用删除文件命令来删除索引文件,须遵循“先关闭后删除”的原则,这与删除表类似.

命令格式:

ERASE|DELETE FILE <文件名>

4.2 删除索引标识

命令格式:

DELETE TAG ALL|<索引标识1>[,<索引标识2>]...

说明:(1)该命令用来删除打开的结构复合索引文件的索引标识.

(2)ALL用于删除结构复合索引文件的所有索引标识,若某个索引文件的所有索引标识都被删除,则该索引文件也被删除.

5 索引的更新

5.1 自动更新

当表中的数据发生变化时(如对表进行插入、删除、添加或更新操作之后),所有当时已经打开的索引文件都会随数据的改变自动改变记录的逻辑顺序,实现索引文件的自动更新.

5.2 重新索引

如果不符合实现索引的条件,在修改表的记录时索引文件就不会自动更新.若要维持记录的逻辑顺序,可用REINDEX命令重建索引.

命令格式为:

REINDEX[COMPACT]

当然也可以用INDEX ON 命令再次建立索引,两者效果相同.

〔1〕施建强.VFP查询系统实现技巧六则[J].中国计算机报,2001(8).

〔2〕李加福,等.Visual Foxpro6.0中文版入门与提高[M].清华大学出版社,1999.

〔3〕萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000.

TP39

A

1673-260X(2012)03-0035-03

猜你喜欢

关键字命令结构
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
只听主人的命令
《形而上学》△卷的结构和位置
论结构
成功避开“关键字”
移防命令下达后
论《日出》的结构
这是人民的命令
创新治理结构促进中小企业持续成长
蓝色命令