哪些情况适合创建索引
-
字段的数值有唯一性的限制
业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。 -
频繁作为where条件查询的字段
-
经常 GROUP BY 和 ORDER BY 的列
如果待排序的列有多个,那么可以在这些列上建立组合索引 。 -
UPDATE、DELETE 的 WHERE 条件列
-
DISTINCT 字段需要创建索引
-
多表 JOIN 连接操作时,创建索引注意事项
- 连接表的数量尽量不要超过 3 张
- 对 WHERE 条件创建索引
- 对用于连接的字段创建索引 ,并且该字段在多张表中的 类型必须一致 。
-
使用列的类型小的创建索引
-
使用字符串前缀创建索引
例如
alter table shop add index(address(12));
- 区分度高(散列性高)的列适合作为索引
- 使用最频繁的列放到联合索引的左侧
- 在多个字段都要创建索引的情况下,联合索引优于单值索引
哪些情况不适合创建索引
- 在where中使用不到的字段,不要设置索引
- 数据量小的表最好不要使用索引
- 有大量重复数据的列上不要建立索引,例如性别字段。
- 避免对经常更新的表创建过多的索引
- 不建议用无序的值作为索引
- 删除不再使用或者很少使用的索引
- 不要定义冗余或重复的索引