Oracle 索引
一、B树索引
1. 创建方式
格式: create index index_name on table_name(column_name, ...); 示例: create index idx_emp_name on emp(emp_name);
“ , ... ”:标识创建多列复合索引以逗号隔开
2. 删除索引
drop index index_name
ps:、假如字段含有 null 值,导致索引失效
二、位图索引
格式: create bitmap index index_name on table_name(column_name, ...); 示例: create bitmap index idx_emp_gender on emp(emp_gender);
位图索引一般用于基数小的列,基数和数据行数比例为 1% 时,Oracle推荐使用位图索引
位图索引最后是组合使用,效果最佳
三、函数索引
1. 为什么使用函数索引
假设,此时 emp 表中存在 emp_name 字段,此字段原本添加过B树索引。
emp_name 存在一个值为 “jack”,此时查询语句:
select * from emp where emp_name='JACK';
这样并不能,查询出数据来,需要用到一个函数 “upper()”
select * from emp where upper(emp_name)='JACK';
但这样一来,B树索引就失效了。此时,就需要用到函数索引了。
2. 函数索引的创建
格式: create index index_name on table_name(function_name(column_name)); 示例: create index idx_emp_name on emp(upper(emp_name));
3. 如何使 like 语句百分号在前也使用索引
1> 针对使用 like 语句的列创建 reverse() 函数的函数索引,这里假设列面为 emp_name
2> 使用:select * from emp where reverse(emp_name) like reverse('%xx');
*注:个人笔记