索引
索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能减少磁盘I/O
使用 CREATE INDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引。
创建标准索引
SQL> CREATE INDEX item_index ON itemfile (itemcode)
TABLESPACE index_tbs;
重建索引
SQL> ALTER INDEX item_index REBUILD;
删除索引
SQL> DROP INDEX item_index;
组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度。
SQL> CREATE INDEX comp_index
ON itemfile(p_category, itemrate);
Oracle中组合索引的使用详解
http://www.cnblogs.com/rootq/archive/2008/10/19/1314669.html (执行计划、组合索引的讲解)
1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引;
索引中的分区
可以将索引存储在不同的分区中
与分区有关的索引有三种类型:
局部分区索引 - 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致
全局分区索引 - 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关
全局非分区索引 - 在分区表上创建的全局普通索引,索引没有被分区
like '%a%'任何情况下都不会走索引,因为索引只是排了个序,对于like '%a%'这种操作索引根本用不上,但对like 'a%'这种是有效的
两面%%的时候不会走索引,后面有的时候才会走索引。 看执行计划