索引漫谈
索引漫谈索引是我们常用的数据基本操作,下面谈一谈索引:
VFP对复合索引文件提供了四种类型:
主索引、候选索引、唯一索引和普通索引 。
(1)主索引:主索引仅用于数据库表,自由表没有主索引。一个表只能创建一个主索引。它不包含Null值或重复值。
(2)候选索引:是可以作主关键字的索引,它不包含Null值或重复值。在数据表和自由表中均可以为每个表建立多个候选索引。
(3)普通索引:可以用来对记录排序和搜索记录,它不强迫记录中的数据具有唯一性。在一个表中可以有多个普通索引。
选择合适的索引类型可以以下列准则作为依据:
1、如果需要排序记录,以便显示、查询或打印,可以使用普通索引、候选索引或主索引。
2、如果要在字段中控制重复值的输入并对记录排序,则对数据表可以使用主索引或候选索引,对自由表可以使用候选索引。
3、如果准备设置关系,则可以依据表在关系中所起的作用来分别使用普通索引、主索引或候选索引。
【注意】在命令窗口是用命令创建索引后,该索引立即自动成为主控索引。而在表设计器是创建索引后,该索引不能立即自动成为主控索引,需要用命令SET ORDER TO 设置。
对于新手来说,比较难的是如何创建符合要求的索引,或者说是如何写出符合要求的索引表达式,下面用实例进行讲解。
设有一个表SB.dbf (名称 C6,启用日期 D8,价格 N9,2,类别 L1 )
1、 按启用日期索引,启用日期相同时按价格索引。
INDEX ON DTOC(启用日期)+ALLTRIM(STR(价格)) TAG SB1
2、 按启用日期索引,启用日期相同时按价格降序索引
INDEX ON DTOC(启用日期)+ALLTRIM(STR(10000000-价格)) TAG SB2
3、 按设备类别排列,类别相同时按名称排列
INDEX ON IIF(类别,A,B)+ALLTRIM(名称) TAG SB3
4、 按设备类别排列,类别相同时按名称降序排列
INDEX ON IIF(类别,B,A)+ALLTRIM(名称)DESC TAG SB4
5、 按名称降序排列,名称相同时按启用日期降序排列
INDEX ON 名称+DTOC(启用日期)DESC TAG SB5
6、 按名称降序排列,名称相同时按启用日期升序排列
INDEX ON 名称+ALLTRIM(STR(DATE()-(启用日期))DESC TAG SB6
7、 按设备类别排列,类别相同时按价格排列
INDEX ON IIF(类别,20000000,10000000)-价格 TAG SB7
8、 按设备类别排列,类别相同时按价格降序排列
INDEX ON IIF(类别,10000000,20000000)-价格 DESC TAG SB8