1索引
Visual FoxPro
中的索引和书中的索引类似。书中的索引是一份页码的列表,指向书中的页号。表索引是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序。
对于已经建好的表,索引可以帮助我们对其中的数据进行排序,以便加速检索数据的速度;可以快速显示、查询或者打印记录;还可以选择记录、控制重复字段值的输入并支持表间的关系操作。。
表索引存储了一组记录指针。以查看
Customer
表中的记录为例,您可以按字母顺序列出公司的名称,按邮政编码的顺序准备邮寄清单,或者组织记录来加速查找过程。

索引并不改变表中所存储数据的顺序,它只改变了
Visual FoxPro 读取每条记录的顺序。
一个表可以建立多个索引,每一索引代表一种处理记录的顺序。索引保存在一个结构复合索引文件中,在使用表时,该文件被打开并更新。复合结构索引文件名与相关的表同名,并具有
.cdx 扩展名。
由于建立索引的方法很简单,您或许想为每个字段建立一个索引。但是,不常用的索引往往也会降低程序的执行速度。
本章要点:
5.1 索引类型
5.2 建立索引
5.3
用多个字段进行排序
5.4 筛选记录
5.5 使用索引
5.1
索引类型
索引有四种可以选择的类型:
- 主索引:可确保字段中输入值的唯一性并决定了处理记录的顺序。可以为数据库中的每一个表建立一个主索引。如果某个表已经有了一个主索引,可以继续添加候选索引。
- 候选索引:象主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引
- 普通索引:也可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引。
- 唯一索引:为了保持同早期版本的兼容性,还可以建立一个唯一索引,以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。
5.2
建立索引
在“表设计器”中,选择“索引”选项卡。

- 在“索引名”框中,键入索引名。如果我们在“字段”选项卡中设置了索引,则索引名将自动出现。
- 从“类型”列表中,选定索引类型。
- 在“表达式”框中,键入作为记录排序依据的字段名,或者通过选择表达式框后面的对话按钮,显示“表达式生成器”来建立表达式。
- 若想有选择地输出记录,可在“筛选”框中输入筛选表达式,或者选择该框后面的按钮来建立表达式。如想显示编号<6的记录,则在“筛选”框中选择或输入“编号<6”。
- 索引名左侧的箭头按钮表示升序还是降序,箭头方向向上时按升序排序,向下时则按降序排序。
- 选择“确定”。
建好表的索引后,便可以用它来为记录排序。下面是排序的步骤:
- 打开已建好索引的表。
- 选择“浏览”。
- 从“表”菜单中选择“属性”。
- 在“索引顺序”框中,选择要用的索引。
- 选择“确定”。
显示在“浏览”窗口中的表将按照索引指定的顺序排列记录。选定索引后,通过运行查询或报表,还可对它们的输出结果进行排序。
5.3
用多个字段进行排序
为了提高对多个字段进行筛选的查询或视图的速度,可以在索引表达式中指定多个字段对记录排序。
步骤:
- 打开“表设计器”。
- 在“索引”选项卡中,输入索引名和索引类型。
- 在“表达式”框中输入表达式,其中列出要作为排序依据的字段。
例如,如果要按照技术职务、姓名的顺序对记录进行排序,可以用
“+” 号建立“字符型”字段的索引表达式:
注意:列表中的第一项应该是变化最小的字段。
- 选择“确定”。
如果想用不同数据类型的字段作为索引,可以在非“字符型”字段前加上
STR( ) ,将它转换成“字符型”字段。例如,先按“考核成绩”字段排序,然后按“姓名”排序。在这个表达式中,
“考核成绩”是一种数值型字段,“姓名”是一个字符型字段。
STR(考核成绩,1,2)+ 姓名
注意:字段索引的顺序与它们在表达式中出现的顺序相同。如果用多个“数值型”字段建立一个索引表达式,索引将按照字段的和,而不是字段本身对记录进行排序。
5.4
筛选记录
通过添加筛选表达式,可以控制哪些记录可包含在索引中。类似的操作前文已讲过,不再详述。
步骤:
- 打开“表设计器”。
- 在“索引”选项卡中,创建或选择一个索引。
- 在“筛选”框中,输入一个筛选表达式。
- 选择“确定”。
5.5
使用索引
通过建立和使用索引,可以提高完成某些重复性任务的工作效率,例如对表中的记录排序,以及建立表之间的关系等。根据所建索引类型的不同,可以完成不同的任务:
完成的任务
|
使用的索引
|
排序记录,以便提高显示、查询或打印的速度 |
使用普通索引、候选索引或主索引 |
在字段中控制重复值的输入并对记录排序 |
对数据库表使用主索引或候选索引,对自由表使用候选索引 |
5.5.1 对记录进行排序
对记录排序可以用字段名或其他索引表达式。如果用的是表达式,索引将对其进行计算,以此确定记录出现的顺序,然后存储一个按此顺序处理表中记录的指针列表。
5.5.2 控制字段中重复值的输入
我们只需在“类型”一栏,将某一字段设置为“主索引”或“候选索引”就可以控制字段重复值的输入,强制在字段中输入唯一的值。例如:每个客户在“Customer”表中的“Cust_ID”字段只能有一个唯一的值。

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