1. Concept of Indexing
1.1 Index
- 索引项=索引键+行指针
- 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
- Index Entries(索引项)存储在B-tree/hash table中。
1.2 Create Index
CREATE [UNIQUE] INDEX indexname ON tablename (colname [ASC | DESC] {,colname [ASC | DESC] . . .}) ;
eg 1 : Create an index “citiesx” on “city” of the customers table.
Create index citiesx on customers(city);
eg 2 : Delete the index “citiesx” , can use the standard form:
Drop index citiesx;
eg 3 : Want to declare the “cid” to be UNIQUE INDEX.
Create unique index cidx on customers (cid);
1.3 DB-Index 分类
- 索引
- 组合索引
- 唯一索引
- 聚簇
1.4 建立索引的原则:
- 经常在查询条件中使用的属性
- 经常作为MAX、MIN等集函数处理参数的属性
- 经常用于连接操作的属性
1.5 DB-Index 作用
- 可提高数据Select速度;但维护要付出代价;
- 频繁进行数据Updates的表,其索引选择要注意。
Eg. 学籍表在新生入校期间,录入数据量大,可删除索引;待数据趋于稳定后,重建索引,加快查询速度。
2. 聚簇(Cluster/Cluster Index )存取方法
- CREATE CLUSTER [schema.]clustername (colname datatype {, . . .} [cluster_clause {. . .}];
- DROP CLUSTER [schema.]clustername [INCLUDING TABLES [CASCADE CONSTRAINTS]];
2.1 概念
把某些属性组上,具有相同值的元组集中存放在连续的物理块中,称为聚簇。这些属性组叫聚簇码/聚簇索引。
2.2 特点
聚簇比其他种类的索引查询效率高;一个DB可建多个聚簇,但一个关系(表)只能加入一个聚簇。
2.3 弊端
聚簇可极大提高某些查询性能,但建立与维护聚簇的开销也相当大,因此应综合权衡。DB-Index 分类:索引、组合索引、唯一索引、聚簇