--INDEX
什么是索引?
1、一种用于提升查询效率的数据库对象;
2、通过快速定位数据的方法,减少磁盘I/O操作;
3、索引信息与表独立存放;
4、oracle数据库自动使用和维护索引
索引分类:
唯一索引;
非唯一索引;
创建索引的两种方式
自动创建
在定义主键或唯一键约束时系统会自动在相应的字段上创建唯一性索引。
手动创建
用户可以在其它列上创建非唯一的索引,以加速查询。
索引的优缺点
建立索引的优点
1、大大加速数据的检索速度;
2、创建唯一性索引,保证数据库表中每一行数据的唯一性;
3、加速表和表之间的连接;
4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的是假。
索引的缺点
1、索引需要占物理空间;
2、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
创建索引的原则
创建索引:创建索引一般有以下两个目的:
维护被索引列的唯一性和提供快速访问表中数据的策略。
1、在select操作占大部分的表上创建索引;
2、在where子句中出现最频繁的列上创建索引;
3、在选择性高的列上创建索引(补充索引选择性,最高是1,eg:primary key)
4、符合索引的主列应该是最有选择性的和where限定条件最常用的列,并以此类推第二列。。。。
5、小于5M的表,最好不要使用索引来查询,表越小,越适合用全表扫描。
使用索引的原则:
1、查询结果是所有数据行的5%以下时,使用index查询效果最好;
2、where条件中经常用到表的多列时,使用复合索引效果会好于几个单列索引。因为当SQL
语句所查询的列,全部都出现在符合索引中时,此时由于oracle只需要查询索引块即可
获得所有数据,当然比使用多个单列索引要快得多;
3、使
--查询现有的索引
SELECT * FROM USER_INDEXES;
--可获知索引建立在那些字段上
SELECT * FROM USER_IND_COLUMNS;