1. 索引 索引是用于加速数据存取的数据库对象。合理地使用索引可以大大降低I/O次数从而提高数据访问性能。
2. 按照存储方式分类:
1) B*-树索引
2) 反向索引
3) 位图索引
按照索引列的个数:
1) 单列索引
2) 复合索引
按照索引列值的唯一性
1) 唯一索引
2) 非唯一索引
3. 单列索引和复合索引:
单列索引是基于单个列所建立的索引;复合索引是基于两列或多列所建立的索引。可以在同一张表上建立多个索引,但是要求列的组合必须不同,列的顺序不同也可以。
CREATE INDEX emp_idx1 ON emp(ename,job);
4. 唯一索引和非唯一索引
唯一索引是索引列值不能重复的索引;非唯一索引是索引列值可以重复的索引。无论是唯一索引还是非唯一索引,索引列都允许null。当定义主键约束和唯一约束时,Oracle都会自动在相应的约束列上建立唯一索引。
5. 索引管理的指导方针
1) 使用Oracle工具SQL*Loader、IMPDP和IMP装载数据时,应该先导入数据,后建立索引。
2) 索引正确的表和列 建立和规划索引时,必须选择合适的表和列。如果选择的表和列不合适,不仅无法提高查询速度,反而会极大地降低DML操作的速度。建立索引的指导方针如下:
A. 索引经过建立在WHERE子句经常应用的表列上。如果在大表上频繁使用某列或者几列作为条件执行索引操作,并且检索操作行数低于总行数的15%,那么应该考虑在这些列上建立索引。
B. 为了提高多表连接的性能,应该在连接列上建立索引。
C. 不要在小表上建立索引。
D. 如果经常基于某列或某几列执行排序操作,那么通过这些列上建立索引,可以加快数据排序的速度。
3) 限制表的索引个数 索引主要用于加速查询速度,但会降低DML操作的速度。索引越多,DML操作的速度越慢,尤其会极大影响INSERT操作和DELETE操作的速度。因此规划索引时,必须仔细权衡查询和DML的需求。
4) 使用NOLOGING选项建立索引
5) 建立索引时,既可以将索引和基表放在相同的表空间中,也可以放在不同的表空间中。将表和索引部署到相同表空间中,可以简化表空间的管理。将表和索引部署到不同表空间,可以提高性能。
本文介绍了数据库索引的基础概念及不同类型,包括B*-树索引、反向索引和位图索引等,并探讨了单列索引与复合索引的区别。此外,还详细讲解了唯一索引和非唯一索引的特点,以及如何根据实际需求制定合理的索引管理策略。
1403

被折叠的 条评论
为什么被折叠?



