第三节 用SQL创建索引
索引是一种外部数据结构,用于排序或排列指向表中数据的指针。在表中应用索引时,指定的是某种数据排列,以便可以更快速地访问这些数据。但是,如果在表中应用太多索引,可能会降低性能,这是因为维护索引需要额外的开销,而且在多用户环境中使用索引时可能会引起锁定问题。如果在正确上下文中使用,索引可以大大提高应用程序的性能。
若要在表中建立索引,必须命名索引,命名要建立索引的表,命名要使用的表中的一个或多个字段,并命名为我们想要使用的选项。下面我们来使用Create INDEX语句来建立索引。首先我们先创建一个示例表,名为“人员”,用下面的语句来创建:
Create TABLE 人员
(
编号 int,
姓名 varchar(25),
性别 varchar(2),
住址 varchar(55),
电话 varchar(11),
国籍 varchar(20)
);
一、创建升序索引
接下来我们可以使用以下代码在“人员”表上建立索引:
Create INDEX 索引_编号
ON 人员 (编号);
这样我们就在“人员”表的“编号”字段上创建了一个名为“索引_编号”的索引。
二、创建降序索引
索引的字段可以按两种方式之一进行排序:升序(ASC)或降序(DESC)。默认次序为升序,不必声明。如果使用升序,则数据将从1到100进行排序。如果指定降序,则数据将从100到1进行排序。应该在索引中声明每个字段的排序次序。降序索引示例:
Create INDEX 索引_编号
ON 人员 (编号 DESC);
三、创建带选项的索引
可以用于索引的选项主要有四种:PRIMARY、DISALLOW NULL、IGNORE NULL和UNIQUE。
1、创建带PRIMARY选项的索引
PRIMARY选项将索引指定为表的主键。尽管可以用多个字段声明主键索引,但每个表只能有一个主键索引。可以使用WITH关键字声明索引选项。
Create INDEX 索引_编号
ON 人员 (编号)
WITH PRIMARY;
若要对多个字段创建主键索引,可将所有字段名都包括在字段列表中。
Create INDEX 索引_编号
ON 人员 (编号,姓名,性别)
WITH PRIMARY;
2、创建带DISALLOW NULL选项的索引
DISALLOW NULL选项防止在字段中插入空数据。(这与Create TABLE语句中使用的NOT NULL声明类似)。例如:
Create INDEX 索引_电话
ON 人员 (电话)
WITH DISALLOW
NULL;
3、创建带IGNORE NULL选项的索引
IGNORE NULL选项导致索引忽略表中的空数据。这意味着索引中不会使用(或计数)在所声明字段中有空值的任何记录。
Create INDEX 索引_姓名
ON 人员 (姓名)
WITH IGNORE
NULL;
四、创建不带重复项的索引
除了PRIMARY、DISALLOW NULL和IGNORE NULL选项之外,还可以将索引声明为UNIQUE(唯一值),这意味着在被索引字段中只能插入唯一的、非重复的值。
例如:
Create UNIQUE
INDEX 索引_电话
ON 人员 (电话);