oracle索引index

-----------------------------------------oracle索引index---------------------------------------------

索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o 次数,从而

提高数据访问性能。索引有很多种我们主要介绍常用的几种:

为什么添加了索引之后,会加快查询速度呢?

图书馆:如果杂乱地放书的话检索起来就非常困难,所以将书分类,然后再建一个箱子,箱

子里面放卡片,卡片里面可以按类查询,按姓名查或者类别查,这样的话速度会快很多很多,

这个就有点像索引。索引的好处就是提高你找到书的速度,但是正是因为你建了索引,就应

该有人专门来维护索引,维护索引是要有时间精力的开销的,也就是说索引是不能乱建的,

所以建索引有个原则:如果有一个字段如果不经常查询,就不要去建索引。现在把书变成我

们的表,把卡片变成我们的索引,就知道为什么索引会快,为什么会有开销。

创建索引的语法:

创建索引:

1. 单例索引

单例索引是基于单个列所建立的索引,比如:

CREATE index 索引名  on 表名(列名)

2. 复合索引

复合索引是基于两个列或多个列的索引。在同一张表上可以有多个索引,但是

要求列的组合必须不同,比如:

Create index emp_idx1 on emp(ename,job);

Create index emp_idx1 on emp(job,ename);

范例:给person表的name建立索引

createindex pname_index on person(name);

            范例:给person表创建一个name和gender的索引

     createindex pname_gender_index on person(name, gender);

索引的使用原则:

Ø  在大表上建立索引才有意义

Ø  在where子句后面或者是连接条件上建立索引

Ø  索引的层次不要超过4

代码示例:

select * from PERSON t

--创建单列索引

create index pname_index on person(pname);

--索引不需要主动使用,根据索引列查询时就会自动的使用索引

select * from person t where t.pname = '张三';

--复合索引

create index pg_index on person(pname, gender);

select * from person t where t.pname = '张三' and t.gender = 1;

--查询数据使用的时候是有索引顺序的,下面这条sql就不会使用pg_index

select * from person t where t.gender = 1 and t.pname = '张三';

猜你喜欢

转载自blog.csdn.net/weixin_41547486/article/details/80601526