如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
导入§4.1排序与索引1.概念排序又称物理排序,是把表中的记录按某种顺序重新排列后,把排好次序的记录存放到一个新的表文件里,而原表中记录的次序不变。利用SORT命令,可以实现物理排序。4.1.1排序1.概念索引又称逻辑排序,是按照预先规定的逻辑顺序来对表中的数据进行排序。VFP6.0中的索引保存在索引文件中,索引文件是一个只包含两列的简单表:被索引字段的值以及含有该值的每个记录在原表中的位置。实际上创建索引就是创建一个由指向.DBF文件记录的指针构成的文件。这与书的目录类似,书的目录是一份页码列表,用于指示读者查找书中特定的页码;而表的索引是记录号列表,用于确定记录的物理顺序。每个索引都有一个索引表达式来确定索引的顺序,索引表达式可以是一个字段,也可以是多个字段。2.索引类型(1)索引类型按功能来分类索引类型分类有四种,即主索引(PrimaryIndex)、候选索引(CandidateIndex)、普通索引(RegularIndex)和唯一索引(UniqueIndex)。索引类型(2)按扩展名来分类按扩展名来分类有两种,单索引和复合索引,前者扩展名为.IDX,后者扩展名为.CDX。1)单索引。单索引是单独的IDX索引文件,只包含一个索引关键字表达式,是一种非结构化的索引,也称为单入口索引,一般程序设计中的临时索引常用这种类型,必须用命令打开。2)复合索引。复合索引文件包含了多个索引关键字,这些索引关键字称为索引标识,.CDX索引包含多个标识,代表着多种排序方案。复合索引文件也有两种,一种是结构复合索引文件,另一种是非结构复合索引文件。①结构复合索引。当创建表或修改表结构时,可以从表结构中挑选用于创建索引标记的字段,然后由VFP6.0创建一个.CDX复合索引文件,VFP6.0把该文件当作表的一个固有部分来处理,并在使用表时自动打开。因此,这种复合索引文件被称为结构复合索引文件。②非结构复合索引文件。3.建立索引在VFP6.0中,一般情况下都可以在表设计器中交互建立索引,特别是主索引和候选索引是在设计数据库时确定好的。但有时需要在程序中临时建立一些普通索引或唯一索引,所以仍然需要了解一下索引命令,并且通过索引命令还可以进一步帮助读者理解VFP6.0的索引和索引文件。建立索引的命令是INDEX,具体格式如下:格式:INDEXON<索引关键字>TO<单索引文件名>|TAG<索引标识名>[OF<复合索引文件名>][FOR<条件>][COMPACT][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]功能:对当前表建立一个索引文件或增加索引标识。4.使用索引建立好索引文件后,可以使记录按索引关键字排序。使用索引文件能够加快查询的速度,利用索引查询必须同时打开表与索引文件。一个表可以打开多个索引文件,同一个复合索引文件中也可能包含多个索引标识,但任何时候只有一个索引文件能起作用,在复合索引文件中也只有一个索引标识能起作用。当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引或当前索引。也就是说,实现索引查询必须满足以下的条件,即:打开表;打开索引文件;确定主控索引文件;对于复合索引文件还须确定主控索引。(1)打开和关闭索引文件若当前仅有一个索引文件被打开,它就成为主控索引文件。索引刚建立时,索引文件呈打开状态且成为主控索引文件。(2)确定主控索引复合索引文件中当前建立的索引标识自动成为主控索引,但须注意,表重新打开时尽管结构复合索引文件已自动打开,还须确定主控索引。命令格式:SETORDERTO[<数值表达式>|<单索引文件名>|[TAG]<索引标识>[ASCENDING|DESCENDING]功能:改变主控索引文件或主控索引。(3)删除索引如果某个索引不再使用了则可以删除它,删除索引的办法是在表设计器中使用索引选项卡选择并删除索引。使用命令删除结构索引的格式是:命令格式:DELETETAG<索引标识1>[,<索引标识2>]…丨ALL功能:删除打开的结构复合索引文件的索引标识。5.更新索引(1)自动更新当表中的数据发生变化时(例如对它进行插入、删除、添加或更新操作之后),所有当时已打开的索引文件都会随数据的改变自动改变记录的逻辑顺序,实现索引文件的自动更新。(2)重新索引若未确定主控索引文件或主控索引,修改表的记录时索引文件就不会自动更新。如果仍要维持记录的逻辑顺序,可用REINDEX命令重建索引,其命令格式为:REINDEX[COMPACT];当然也可用INDEXON命令再次建立索引。两者效果相同。顺序查询的思想是从指定范围的第一个记录开始按记录的顺序依次查询符合条件的记录。顺序查询命令包括LOCATE和继续查询命