常见的索引
当表的数据量比较大时,查询操作会比较费时。建立索引是加快查询速度的有效手段。常见的索引包括顺序文件的索引,B+树索引,散列索引等。顺序文件上的索引是针对按指定属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。B+树索引是将索引属性组织成B+树的形式,B+树的叶子节点为属性值和相应的元组指针。B+树索引具有动态平衡的优点。散列索引是建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针,散列索引具有查找速度快的特点。
B+的性质和常见操作详见:
B + 树总结
索引虽然可以加速数据的查询,但需要占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这些都会增加数据库的负担。
建立索引
在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式为:
CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名> (<列名>[次序][,<列名>[次序]]...)
其中,<表名> 是要建立索引的基本表的名字,索引是可以建立在该表的一列或多列上,各列名之间用逗号分隔开。每个<列名>之后可以用<次序>指定索引值的排列次序,可取值ASC(升序)和DESC(降序),默认值是ASC。
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。
CLUSTER表示要建立的索引是聚簇索引。
把属性上具有相同值的元组集中放在连续的物理块中成为聚簇。
例子:为学生-课程数据库中的Students、Course和SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按照课程号升序建唯一索引,SC按学号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno)CREATE UNIQUE INDEX Coucno ON Course(Cno)CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC)
修改索引
对于已经建立的索引,如果需要对其重命名,可以使用ALITER INDEX命令。其一般格式为:
ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除索引
索引一旦建立就由系统使用和维护,不需要用户的干预。建立索引是为了减少查询操作的时间,但如果数据增删改频繁,系统就会花很多时间维护索引,从而降低查询效率。这时可以删除一些不必要的索引。
6-索引&哈希.pdf
