SQL数据库如果建立索引和维护
索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。为了改善查询性能,可以建立素引。
1.创建索引
在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式如下:
CREATE [UNIQUE] [CLUSTER] INDEX<索引名>
ON <基本表名>(<列名>[<次序>],[,<列名>[<次序>]]...);
说明:
(1) UNIQUE规定索引的每一个索引值只对应于表中唯一的记录。
(2) CLUSTER规定此索引为聚集索引。所谓聚集索引是指索引项的顺序与表中记录的物理顺序一致的。聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。使用聚集索引能极大地提高查询性能.省略CLUSTER则表示创建的索引为非聚集索引,非聚集索引与书本中的索引类似.数据存储在一个地方,索引存储在另一个地方,索引带有网站制作指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。
(3)<次序>:建立索引时指定列名的索引表是ASC(升序)或DESC(降序)。若不指定,默认为升序。
(4)本语句建立的索引的排列方式为:先以第一个列名值排序;该列值相同的记录,则按下一列名排序。
【例3.8]在Student表的属性列Sno上创建一个非聚集索引。
CREATE INDEX IDX_DNO_SNO
ON Student(Sno ASC);
【例3.91在Student表的属性列Sname上创建一个聚集索引。
CREATE CLUSTER INDEX IDX_SNAME ON Student(Sname ASC);
2.删除索引
虽然索引能提高查询效率,但过多或不当的索引会导致系统低效。用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片,降低系统效率。因此,不必要的索引应及时删除,删除索引的格式如下:
drop INDEX <索引名>
说明:本语句将删除定义的索引,该索引在数据字典中的描述也将被删除。
【例3.10】删除Student表的索引IDX_DNO_SNO。
drop INDEX IDX DNO SNO;