其他数据对象-----索引
什么是索引?
它是一种用于提升查询效率的数据库对象。
索引的分类
索引分为两种,分别为唯一性索引和非唯一性索引。
索引的优点
1.加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.能够加快表和表之间的连接。
索引的缺点
1. 索引需要占用物理空间
2. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的 维护,降低了数据的维护速度。
创建索引的目的
1. 维护被索引列的唯一性
2. 提供快速访问表中数据的策略
创建索引需要注意的原则
1. 如果某一个表,对这张表的大部分操作是进行查询(select),那么建议在这个表中的指定列添加索引
2. 如果某一个表中的某一列,在where子句中频繁出现,那么建议在该列指定索引
3. 在选择性高的列上创建索引(索引选择性最高是1,如primary key)。
4. 表中的数据量比较大的(大于5M),建议为该表建立索引
使用索引的建议和注意
1. 查询结果是所有数据行的5%以下时,建议使用索引查询
2. Where条件中经常使用到某个表的多列时,使用复合索引要比单列索引块
3. 在insert、update、delete操作较多的列中,不建议使用索引,因为更新表的同时,索引会同步更新,所以会影响执行效率
4. Where子句中的字段,必须是复合索引的第一个字段
例:一个索引是按f1,f2,f3次序建立的,而where子句为f2=XXX,则因为f2不是索引的第一个字段而无法使用该索引
5. 当在where子句中使用某个索引的字段时,要尽可能将操作都移至等号右边
6. 一部分操作符会对oracle是否使用索引造成影响,以下操作会组织oracle使用索引:is null;date_col+0;char_col||’’;to_char;to_number,to_date等
如何创建一个索引
Create index 索引名 on 表名(列名1,[列名2,…]);
注:建立索引时,字段的顺序组合很重要,一般情况下,最常访问字段,放在最前面
索引的存储
索引和表是单独存在的,在为索引指定空间的时候,不要将索引的表和指向的表放入同一个空间,以免造成I/O冲突。
删除索引
Drop index 索引名;