第六章 索引与排序.pptVIP

  • 4
  • 0
  • 约2.95千字
  • 约 66页
  • 2017-06-03 发布于湖北
  • 举报
第六章 索引和排序;本章知识点;;索引可以按照一定的规则重新排列表中的记录,并将排序结果形成索引文件。索引文件是一个二维列表,其中仅有二列数据:关键字值和记录的物理位置。关键字值是包含有字段的排序规则表达式,记录的物理位置指向关键字值在表中所在的物理位置。 ;;;;;;单一索引文件的内部结构如图6-1所示。单一索引文件的扩展名为.IDX。 ;;;;;;在Visual FoxPro中,为表建立索引可以采用两种方法来完成: l????在表设计器中通过直观的操作来建立索引 l????使用INDEX命令来建立索引;;建立单一索引;要建立单一索引文件,应在INDEX命令中使用 TO <IDXFileName>参数。 格式: Use 表(加路径) Index on 字段 to 文件名.idx ;;;;【例】 若要为Student表根据entrancescore字段建立逻辑上降序的单一索引文件(单一索引文件名为EntrDec.IDX),那么应执行如下命令: USE Student INDEX ON –1*entrancescore TO EntrDec.IDX ;;;要建立结构复合索引,应在INDEX命令中使用 TAG<TagName>参数。 格式: Use 表(加路径) Index on 字段 tag 标识名 ;;;;要建立非结构复合索引,应在 INDEX命令中使用 TAG <TagName> [OF <CDXFileName>]参数。 格式: Use 表(加路径) Index on 字段 tag 标识名 of 文件名.cdx;;;在建立复合索引文件时,可以使用[ASCENDING/DESCENDING]参数指定某一索引标识是按照升序(ASCENDING)还是降序(DESCENDING)方式进行排序。 但是需要注意,在建立单一索引文件时,不能使用「ASCENDING/DESCENDING」参数。这是因为单一索引文件只能按照升序方式进行排序。 ;;如果在 INDEX命令中使用[FOR<lExpression>]参数,那么相当于在现有的表上建立有条件筛选索引。也就是说只有符合FOR<lExpression>条件的记录才会出现在索引文件的索引关键字值列表中。 ;;;在实际工作中,如果仅根据某一字段或某一字段表达式建立索引,势必会遇到排序冲突的问题。例如,如果仅根据entrancescore字段建立索引,那么可能会遇到在表中有多条记录的入学成绩相同,那么入学成绩相同的记录如何排序就是我们要解决的排序冲突问题。 为了解决排序冲突,可以利用 INDEX命令的索引关键字表达式。在该表达式中可以根据多个字段的组合来解决排序冲突。 ;;6.3 打开和关闭索引文件;命令格式 SET INDEX TO[<IndexFilelist> | ?] [ORDER<nindexNumber>|<IDXIndexFileName>] |[TAG]<TagName>[OF<CDXFileName>] [ASCENDING|DESCENDING]][ADDITIVE] 命令功能 该命令用于打开一个或多个索引文件。;;(2)?参数用于在执行SET INDEX TO命令时弹出“打开”对话框以选择要打开的索引文件。 (3)ORDER<nindexNumber>参数用于指定在索引文件列表(<IndexFileList>参数)中的第几个索引文件作为当前索引生效。<nindexNumber>参数是一个自然数。 ;;;;【例】 以下命令将 Name.CDX非结构复合索引中的Name索引标识作为当前索引生效: SET INDEX TO Entr.IDX,Birth.IDX,Name.CDX ORDER TAG Name OF Name.CDX ;;命令格式 SET INDEX TO 命令功能 该命令用于关闭已打开的索引文件。 ;命令格式 SET ORDER TO [<nindexNumber>|<IDXIndexFileName> |[TAG]<TagName> [OF<CDXFileName>] [IN<nWorkArea>|<cTableAlias>] [ASCENDING|ESCENDING]];;(2)[IN <nWorkArea>|<cTableAlias>]参数用于指定要设置哪一个工作区的表为当前索引。如果要设置当前索引的表不在当前工作区中,那么应在 SET ORDER TO命令中指明该表所在的工作区。<nWorkArea>参数用于指定工作区号,<cTableAlias>参数用于指定表的别名。;;6.5 利用索引快速查询;命令格式 FIND cExpression 命令功能 该命令用于在当前索引上快速查找索引关键字值与给定的字符串相匹配的首条记录。如果查找到相匹配的

文档评论(0)

1亿VIP精品文档

相关文档