MYSQL原理学习篇简记(五)

 

👏作者简介:大家好,我是小周同志,25届双非校招生Java选手,很高兴认识大家

📕学习出处:本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇

🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

 

什么时候需要 / 不需要创建索引?

 

索引的优点:

  • 大大提高的查询速率。尤其是b+树,时间复杂度为O(logdN),当d就是最大节点为100时,应付千万级数据的查询,也只需要3-4次io操作。

索引的缺点:

  • 占用物理磁盘空间。

  • 索引需要维护。比如修改这个索引的时候,索引内部会进行自适应排序。

  • 降低表的增删改的效率。因为每次增删改索引,B+ 树为了维护索引有序性,都需要进行动态维护

 

什么时候适用索引?
  • 字段有唯一性限制的

  • 经常用于where查询条件的字段。可以增加查询的效率,当有多个字段查询条件时,可以使用联合索引。

  • 用于 GROUP BYORDER BY 的字段。这样在查询的时候就不需要再去做一次排序了,因为建立索引之后在 B+Tree 中的记录都是排序好的。

 什么时候不适用索引?
  • 没有用 whereGROUP BYORDER BY的。既然 无法做到快速定位,那么就相当于索引没直到应有的作用,就不需要索引了,反而浪费了物理磁盘空间。

  • 存在大量重复数据的列不需要索引。因为大量重复数据的话,索引就会进行多次磁盘和内存的io操作,性能消耗贼大,如果这样的话,还不如不加索引。MYSQL有个查询优化器,发现某个数据在表中出现的百分比比较大,会忽略索引,进行全表扫描。

  • 表数据太少,也不需要创建索引。不需要索引也可以很快的找到数据,那么索引就没必要加了。

  • 经常更新的字段不需要创建索引。索引字段被更新之后,b+树会进行自适应重排序,会影响数据库的性能。

有什么优化索引的方法?

前缀索引优化

覆盖索引优化

主键索引最好是自增的

索引最好设置为 NOT NULL

防止索引失效

相关推荐

  1. MYSQL原理学习简记()

    2024-04-14 07:40:02       40 阅读
  2. MYSQL原理学习简记(三)

    2024-04-14 07:40:02       40 阅读
  3. MySQL:基本查询

    2024-04-14 07:40:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 07:40:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 07:40:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 07:40:02       87 阅读
  4. Python语言-面向对象

    2024-04-14 07:40:02       96 阅读

热门阅读

  1. C语言执行CMD命令并隐藏CMD窗口

    2024-04-14 07:40:02       41 阅读
  2. Go 认证与授权(Authentication)

    2024-04-14 07:40:02       209 阅读
  3. 无线通信:多址(Multiple Access)方式

    2024-04-14 07:40:02       49 阅读
  4. springboot中常见的设计模式

    2024-04-14 07:40:02       126 阅读
  5. Spring(三)

    2024-04-14 07:40:02       133 阅读
  6. GNU Autotools 套件详解

    2024-04-14 07:40:02       40 阅读
  7. .net Web Api Post请求传递数据

    2024-04-14 07:40:02       37 阅读