索引的概念不仅仅在 oracle 中存在,很多大型数据库软件都有索引的功能,其主要目的是为某张表的某个经常作为过滤条件的字段创建一个快速的索引区,当用户在查询过程中使用了这个过滤条件(比如 where id = 10)那么数据库会自动去索引区查找这个字段的索引,然后通过索引的指向快速找到需要查找的数据,可以抽象的理解它像我们C语言学习的指针一样。


建立一个索引

create index myindex on emp(deptno); /*为emp表的deptno字段创建一个索引名为 myindex*/

1、有了索引以后插入数据的时候不但要在表插入数据,还要添加索引,所以性能会有所下降。 2、创建索引以后,我们在查询数据的时候不需要指定使用哪一条索引,系统会帮我们自动匹配,我们只需要创建即可。 3、删除表时所有该表的索引也同时被删除

删除一个索引

DROP INDEX myindex;

只有索引的拥有者或拥有DROP ANY INDEX权限的用户才可以删除索引。

什么时候创建索引

  • 列中数据值分布范围很广
  • 列经常在 WHERE 子句或连接条件中出现
  • 表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%