orcal为表字段创建索引
选择创建索引的表
-- 查询当前用户下边的所有的表,
-- 表中的 able_name 字段表示当前用户下的所有的表名。
select * from user_tables;
选择要创建索引的表的列
-- 表user_tab_columns查询当前用户下所有表的所有字段
-- column_name表示表中的字段名
select * from user_tab_columns where table_name = 'table_name'
创建索引
-- index_name表示的是要创建的索引的名称
-- table_name表示要为哪一个表创建索引
-- column_name表示为此表中的哪一个字段进行创建索引
CREATE INDEX index_name ON table_name (column_name);
创建复合索引
-- index_name 表示索引名称
-- employees 表示表名
-- column_name1,column_name2 表示表中的字段名。
CREATE INDEX index_name ON table_name (column_name1, column_name2);
需要对数据库表字段创建索引的相关情况
-
字段的数值有唯一性的限制;
-
频繁作为 WHERE 查询条件的字段;
-
经常 GROUP BY 或 ORDER BY 的列;
-
UPDATE、DELETE 的 WHERE 条件列;
-
DISTINCT 字段需要创建索引;
-
多表 JOIN 连接操作时,创建索引注意事项:
- 连接表的数量尽量不要超过 3 张,因为每增加一张表就相当于增加了一次嵌套的循环,数 量级增长会非常快,严重影响查询的效率;
- 对 WHERE 条件创建索引,因为 WHERE 才是对数据条件的过滤。如果在数据量非常大的情况下,没有 WHERE 条件过滤是非常可怕的;
- 对用于连接的字段作为索引,并且该字段在多张表中的类型必须一致
-
使用类型小的列创建索引;
-
使用字符串前缀创建做引;
-
区分度高(散列性高)的列适合作为索引;
-
使用最频繁的列放到联合索引的左侧;
-
在多个字段都要创建索引的情况下,联合索引由于单值索引