4.3.2 索引的创建、修改和删除: 索引是数据库的对象之一,它对数据库的操作效率有着很重要的影响。好的索引可以大大提高对数据库的检索效率,在检索数据时起到了至关重要的作用。 定义在某关系属性上的索引是一个数据结构,采用编排表中数据的内部特定方法,可显著提高依据该属性值的查询效率。可在表的一个列或多个列上建立索引,列名之间用逗号分开;并可指定索引中索引值的排列顺序,缺省值为升序。 没有索引时,当一个关系的记录数很大时,为查询符合条件的元组要对整个关系进行顺序扫描。例如,有查询语句如下: SELECT * FROM student WHERE sname='赵微' 假定学生关系包含20000个记录,要查找的元组刚好在最后,为查询一个记录,要对20000个记录逐一检查核对。如果为student表的sname属性建立了索引,在查询student表中符合sname的条件时,系统将不再按条件逐条检查记录,而是利用索引来定位符合条件的元组。 索引的使用是有代价的。因为维护索引是一个复杂的算法,需要一定的时间。当对基表进行插入、删除和修改记录操作时,同时要对索引进行维护。因此,索引的存在会影响基表更新操作的效率,但提高了查询效率,这是用户需要的。 索引有两种形式,一种是簇集索引(Clustered),另一种是非簇集索引(Nonclustered)。 簇集索引根据建立索引的属性值对行进行排序,正如簇集索引的字面意思一样,表中的数据会以该属性值作为排序根据,按照排序的结果把数据物理地存放在一起,所以每个表只能有一个簇集索引。 非簇集索引不根据键值排序,索引数据结构和数据行分开。由于非簇集索引的表没有按顺序进行排序,所以查找速度明显低于查找带簇集索引的表。 当表中有Primary Key或Unique等约束时,系统会自动建立索引,建立簇索引还是非簇索引就要由Clustered或Nonclustered指定。 1.索引的创建 2.修改索引 3.删除索引 |