数据库

数据库索引

2020-03-14  本文已影响0人  风中小酌

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

什么时候不需要创建索引:
表很小
不经常在查询中被使用的列
更新太频繁地字段不适合创建索引
不会出现在where条件中的字段不该建立索引

创建索引

索引分为唯一性索引非唯一性索引
唯一性索引在创建主键约束和唯一性约束时,自动创建。
非唯一性索引包括:单行索引、复合索引、函数式索引

创建单行索引

CREATE INDEX 索引名 ON 表名(字段名)

SQL> create index emp_index on employees(last_name);
Index created
创建复合索引

CREATE INDEX 索引名 ON 表名(字段名1, 字段名2, ...)

SQL> create index dep_id_name_ix on departments(department_id, department_name);
Index created

复合索引的生效机制
查询时,where子句中的顺序应和索引定义时字段顺序一致

索引定义
SQL> create index dep_id_name_ix on departments(department_id, department_name);
索引使用
SQL> select * from departments where department_id=301 and department_name='A';
创建函数索引
创建索引时使用了函数
SQL> create index emp_name_upper_ix on employees(upper(last_name));
Index created
要使索引生效,在查询时where子句中也应使用对应的函数。
SQL> select * from employees where upper(last_name)='TOMMY';
EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE   JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- ----------- ---------- ---------- -------------- ---------- -------------
       2500                      Tommy                     se@sfe.com                                     2007/11/1 星 IT_PROG     500078.00                           

查询索引

与索引相关的表有 user_indexes,user_ind_columns

删除索引

SQL> drop index EMP_NAME_UPPER_IX;
Index dropped
上一篇下一篇

猜你喜欢

热点阅读