索引是外部数据结构,用于排序或排列到表中的数据的指针。索引应用到表中时,要指定数据的某些安排,使它可以更快速地访问。但是,如果索引太多应用到表中时,您可能会降低性能因为没有额外开销参与维护索引中,而且因为索引可能会引起锁定问题时在多用户环境中使用。使用正确的上下文中,索引可以显著提高应用程序的性能。
要对表建立索引,必须命名该索引,命名要对其建立索引的表,命名表中要使用的字段,并命名要使用的选项。可以使用 Create INDEX 语句建立索引。例如,可以使用以下代码对前面提到的发票数据库中的客户表建立索引:
Create INDEX idxCustomerID
ON tblCustomers (CustomerID)
索引的字段可以按两种方式之一进行排序:升序 (ASC) 或降序 (DESC)。默认次序为升序,不必声明。如果使用升序,则数据将从 1 到 100 进行排序。如果指定降序,则数据将从 100 到 1 进行排序。应该在索引中声明每个字段的排序次序。
Create INDEX idxCustomerID
ON tblCustomers (CustomerID DESC)
可以用于索引的选项主要有四种:PRIMARY、DISALLOW NULL、IGNORE NULL 和 UNIQUE。PRIMARY 选项将索引指定为表的主键。尽管可以用多个字段声明主键索引,但每个表只能有一个主键索引。可以使用 WITH 关键字声明索引选项。
Create INDEX idxCustomerID
ON tblCustomers (CustomerID)
WITH PRIMARY
要对多个字段创建主键索引,可将所有字段名都包括在字段列表中。
Create INDEX idxCustomerName
ON tblCustomers ([Last Name], [First Name])
WITH PRIMARY
DISALLOW NULL 选项防止在字段中插入空数据。(这与Create TABLE 语句中使用的 NOT NULL 声明类似。)
Create INDEX idxCustomerEmail
ON tblCustomers (Email)
WITH DISALLOW NULL
IGNORE NULL 选项导致索引忽略表中的空数据。这意味着索引中不会使用(或计数)在所声明字段中有空值的任何记录。
Create INDEX idxCustomerLastName
ON tblCustomers ([Last Name])
WITH IGNORE NULL
除了主、不允许空值,并且忽略空值选项,还可以声明索引为唯一,这意味着只有唯一,可以在索引字段中插入非重复值。
Create UNIQUE INDEX idxCustomerPhone ON tblCustomers (Phone)
若要从表中删除索引,使用删除索引语句。
Drop INDEX idxName ON tblCustomers