创建索引,六个小细节必须了解

运维 数据库运维
索引本身可以起到约束的作用,比如唯一索引、主键索引都是可以起到唯一性约束的,因此在我们的数据表中,如果某个字段是唯一性的,就可以直接创建唯一性索引,或者主键索引。

[[405488]]

本文转载自微信公众号「码上Java」,作者码上Java。转载本文请联系码上Java公众号。

1. 字段的数值有唯一性的限制,比如用户名

索引本身可以起到约束的作用,比如唯一索引、主键索引都是可以起到唯一性约束的,因此在我们的数据表中,如果某个字段是唯一性的,就可以直接创建唯一性索引,或者主键索引。

2. 频繁作为 WHERE 查询条件的字段,尤其在数据表大的情况下

在数据量大的情况下,某个字段在 SQL 查询的 WHERE 条件中经常被使用到,那么就需要给这个字段创建索引了。创建普通索引就可以大幅提升数据查询的效率。

3. 需要经常 GROUP BY 和 ORDER BY 的列

索引就是让数据按照某种顺序进行存储或检索,因此当我们使用 GROUP BY 对数据进行分组查询,或者使用 ORDER BY 对数据进行排序的时候,就需要对分组或者排序的字段进行索引。

4.UPDATE、DELETE 的 WHERE 条件列,一般也需要创建索引

我们刚才说的是数据检索的情况。那么当我们对某条数据进行 UPDATE 或者 DELETE 操作的时候,是否也需要对 WHERE 的条件列创建索引呢?

对数据按照某个条件进行查询后再进行 UPDATE 或 DELETE 的操作,如果对 WHERE 字段创建了索引,就能大幅提升效率。原理是因为我们需要先根据 WHERE 条件列检索出来这条记录,然后再对它进行更新或删除。如果进行更新的时候,更新的字段是非索引字段,提升的效率会更明显,这是因为非索引字段更新不需要对索引进行维护。

不过在实际工作中,我们也需要注意平衡,如果索引太多了,在更新数据的时候,如果涉及到索引更新,就会造成负担。

5.DISTINCT 字段需要创建索引

有时候我们需要对某个字段进行去重,使用 DISTINCT,那么对这个字段创建索引,也会提升查询效率。

6. 做多表 JOIN 连接操作时,创建索引需要注意以下的原则

首先,连接表的数量尽量不要超过 3 张,因为每增加一张表就相当于增加了一次嵌套的循环,数量级增长会非常快,严重影响查询的效率。

其次,对 WHERE 条件创建索引,因为 WHERE 才是对数据条件的过滤。如果在数据量非常大的情况下,没有 WHERE 条件过滤是非常可怕的。

总结

最后,对用于连接的字段创建索引,并且该字段在多张表中的类型必须一致。比如 user_id 在 product_comment 表和 user 表中都为 int(11) 类型,而不能一个为 int 另一个为 varchar 类型。

 

责任编辑:武晓燕 来源: 码上Java
相关推荐

2016-04-18 09:18:28

用户体验设计产品

2023-07-10 15:51:03

项目经理软件性能

2011-06-27 16:08:08

SEO

2014-07-07 09:29:15

Android L用户体验

2024-04-02 08:05:27

商业智能报告

2011-06-14 16:46:23

SEO

2011-06-28 16:38:10

网站优化SEO

2015-07-30 14:43:04

导航栏iOS开发

2023-10-10 18:24:46

PostgreSQL性能RDBMS

2009-06-04 10:20:34

Hibernate持久化Java

2022-11-30 15:01:11

React技巧代码

2023-09-24 13:55:42

Spring应用程序

2021-09-09 13:39:39

云计算私有云工具

2011-08-04 16:04:09

注册表

2022-05-17 15:34:08

视觉效果UI 界面设计

2021-11-11 15:13:15

人工智能容器技术

2023-01-04 10:17:19

LinuxBashshell

2010-07-12 14:08:59

UML序列图

2010-05-04 08:58:02

.NET

2023-05-16 16:03:10

点赞
收藏

51CTO技术栈公众号