Oracle索引
索引:就是一个创建表上一列或多列的数据库对象。
索引是用于加速数据"存取"的数据对象。
合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。
索引的特点:
优点: 提高表的查询效率;
缺点: 降低表增删该效率;
--如果表没有创建索引,数据库对表的查询就是一行一行地查询。
--对索引表的查询并不是一行一行地查询,而是默认使用了二叉树算法进行查询。
--单列索引
--单列索引是基于单个列所建立的索引
create [unique] index 索引的名称
on 表(列名)
--多列索引:复合索引
--复合索引是基于两个列或多个列的索引。
--在同一张表上可以有多个索引,但是要求列的组合必须不同
create [unique] index 索引的名称
on 表(列名1,列名2)
--如果指定了unique关键字,那么索引列的值就不能够出现重复。
create table person(
id number(10) primary key,
name varchar2(200),
gender number(1) default 1
);
--给 person 表的 name 建立索引
create index pname_index on person(name);
--给 person 表创建一个 name 和 gender 的索引
create index pname_gender_index on person(name, gender);
删除索引
drop index 索引名;
使用索引的建议
--因为索引的优点是提高查询数据的效率,缺点是会降低增删改的效率.
-- 1、数据量很大,需要查询的表中使用索引
-- 2、一般在查询比较多的表使用索引,如果表经常增删改,索引慎用
-- 3、多列索引的触发条件: create index 索引的名称 on person(name,address) :多列索引有优先顺序
-- 1)select * from person where name = ? and address =? 触发索引
-- 2)select * from person where name = ? or address =? 不会触发索引
-- 3)select * from person where address =? and name = ? 不会触发
-- 4)select * from person where address =? 不会触发
--对于大文本和二进制类型的数据不应该创建索引;