您的位置
 
 

1索引
  Visual FoxPro 中的索引和书中的索引类似。书中的索引是一份页码的列表,指向书中的页号。表索引是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序。

  对于已经建好的表,索引可以帮助我们对其中的数据进行排序,以便加速检索数据的速度;可以快速显示、查询或者打印记录;还可以选择记录、控制重复字段值的输入并支持表间的关系操作。。

  表索引存储了一组记录指针。以查看 Customer 表中的记录为例,您可以按字母顺序列出公司的名称,按邮政编码的顺序准备邮寄清单,或者组织记录来加速查找过程

d2-5-1.jpg (25756 字节)

  索引并不改变表中所存储数据的顺序,它只改变了 Visual FoxPro 读取每条记录的顺序。

  一个表可以建立多个索引,每一索引代表一种处理记录的顺序。索引保存在一个结构复合索引文件中,在使用表时,该文件被打开并更新。复合结构索引文件名与相关的表同名,并具有 .cdx 扩展名。

  由于建立索引的方法很简单,您或许想为每个字段建立一个索引。但是,不常用的索引往往也会降低程序的执行速度。

本章要点:

 5.1  索引类型

 5.2  建立索引

 5.3  用多个字段进行排序

 5.4  筛选记录

 5.5  使用索引

5.1  索引类型

索引有四种可以选择的类型:

  • 主索引:可确保字段中输入值的唯一性并决定了处理记录的顺序。可以为数据库中的每一个表建立一个主索引。如果某个表已经有了一个主索引,可以继续添加候选索引。
  • 候选索引:象主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引
  • 普通索引:也可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引。
  • 唯一索引:为了保持同早期版本的兼容性,还可以建立一个唯一索引,以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。

5.2  建立索引

 

  在“表设计器”中,选择“索引”选项卡。

 d2-5-2.jpg (26811 字节)

  1. 在“索引名”框中,键入索引名。如果我们在“字段”选项卡中设置了索引,则索引名将自动出现。
  2. 从“类型”列表中,选定索引类型。
  3. 在“表达式”框中,键入作为记录排序依据的字段名,或者通过选择表达式框后面的对话按钮,显示“表达式生成器”来建立表达式。
  4. 若想有选择地输出记录,可在“筛选”框中输入筛选表达式,或者选择该框后面的按钮来建立表达式。如想显示编号<6的记录,则在“筛选”框中选择或输入“编号<6”。
  5. 索引名左侧的箭头按钮表示升序还是降序,箭头方向向上时按升序排序,向下时则按降序排序。
  6. 选择“确定”。

 建好表的索引后,便可以用它来为记录排序。下面是排序的步骤: 

  1. 打开已建好索引的表。
  2. 选择“浏览”。
  3. 从“表”菜单中选择“属性”。
  4. 在“索引顺序”框中,选择要用的索引。
  5. 选择“确定”。

  显示在“浏览”窗口中的表将按照索引指定的顺序排列记录。选定索引后,通过运行查询或报表,还可对它们的输出结果进行排序。

5.3   用多个字段进行排序

  为了提高对多个字段进行筛选的查询或视图的速度,可以在索引表达式中指定多个字段对记录排序。

步骤:

  1. 打开“表设计器”。
  2. 在“索引”选项卡中,输入索引名和索引类型。
  3. 在“表达式”框中输入表达式,其中列出要作为排序依据的字段。

    例如,如果要按照技术职务、姓名的顺序对记录进行排序,可以用 “+” 号建立“字符型”字段的索引表达式:

                   职工表.技术职务+职工表.姓名

    注意:列表中的第一项应该是变化最小的字段。

  4. 选择“确定”。

  如果想用不同数据类型的字段作为索引,可以在非“字符型”字段前加上 STR( ),将它转换成“字符型”字段。例如,先按“考核成绩”字段排序,然后按“姓名”排序。在这个表达式中, “考核成绩”是一种数值型字段,“姓名”是一个字符型字段。

                    STR(考核成绩,1,2)+ 姓名

  注意:字段索引的顺序与它们在表达式中出现的顺序相同。如果用多个“数值型”字段建立一个索引表达式,索引将按照字段的和,而不是字段本身对记录进行排序。

5.4  筛选记录

  通过添加筛选表达式,可以控制哪些记录可包含在索引中。类似的操作前文已讲过,不再详述。

步骤:

  1. 打开“表设计器”。
  2. 在“索引”选项卡中,创建或选择一个索引。
  3. 在“筛选”框中,输入一个筛选表达式。
  4. 选择“确定”。

5.5  使用索引

  通过建立和使用索引,可以提高完成某些重复性任务的工作效率,例如对表中的记录排序,以及建立表之间的关系等。根据所建索引类型的不同,可以完成不同的任务:

完成的任务

使用的索引

排序记录,以便提高显示、查询或打印的速度 使用普通索引、候选索引或主索引
在字段中控制重复值的输入并对记录排序 对数据库表使用主索引或候选索引,对自由表使用候选索引

5.5.1 对记录进行排序

  对记录排序可以用字段名或其他索引表达式。如果用的是表达式,索引将对其进行计算,以此确定记录出现的顺序,然后存储一个按此顺序处理表中记录的指针列表。

5.5.2  控制字段中重复值的输入

  我们只需在“类型”一栏,将某一字段设置为“主索引”或“候选索引”就可以控制字段重复值的输入,强制在字段中输入唯一的值。例如:每个客户在“Customer”表中的“Cust_ID”字段只能有一个唯一的值。

d2-5-3.jpg (13524 字节)

  用该字段作为关键字段可以唯一确定每一条记录。如果该表为某数据库的一部分,可以采用主索引或是候选索引。如果该表是自由表,并且已经有了一个主索引,您就必须采用候选索引。再如,我们将花名册表中的“编号”设为主索引或侯选索引,则在输入新的记录时,如有和前面重复的,则不能输入。