什么情况下需要创建MySQL索引?

 更新时间:2014年10月22日 09:13:06   作者:yuxikuo_1  
这篇文章主要介绍了什么情况下需要创建MySQL索引?本文同时介绍了哪些情况不适合创建MySQL索引,需要的朋友可以参考下

索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大地降低CPU资源的消耗。

如何判定是否需要创建索引?

1、较频繁地作为查询条件的字段

这个都知道。什么是教频繁呢?分析你执行的所有SQL语句。最好将他们一个个都列出来。然后分析,发现其中有些字段在大部分的SQL语句查询时候都会用到,那么就果断为他建立索引。

2、唯一性太差的字段不适合建立索引

什么是唯一性太差的字段。如状态字段、类型字段。那些只存储固定几个值的字段,例如用户登录状态、消息的status等。这个涉及到了索引扫描的特性。例如:通过索引查找键值为A和B的某些数据,通过A找到某条相符合的数据,这条数据在X页上面,然后继续扫描,又发现符合A的数据出现在了Y页上面,那么存储引擎就会丢弃X页面的数据,然后存储Y页面上的数据,一直到查找完所有对应A的数据,然后查找B字段,发现X页面上面又有对应B字段的数据,那么他就会再次扫描X页面,等于X页面就会被扫描2次甚至多次。以此类推,所以同一个数据页可能会被多次重复的读取,丢弃,在读取,这无疑给存储引擎极大地增加了IO的负担。

3、更新太频繁地字段不适合创建索引

当你为这个字段创建索引时候,当你再次更新这个字段数据时,数据库会自动更新他的索引,所以当这个字段更新太频繁地时候那么就是不断的更新索引,性能的影响可想而知。大概被检索几十次会更新一次的字段才比较符合建立索引的规范。而如果一个字段同一个时间段内被更新多次,那么果断不能为他建立索引。

4、不会出现在where条件中的字段不该建立索引

这个相信大家都知道。

相关文章

  • MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据,在MySQL数据库中,JSON格式的数据处理已经变得越来越常见,本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法,需要的朋友可以参考下
    2023-09-09
  • Mybatis动态传入order by问题

    Mybatis动态传入order by问题

    这篇文章主要介绍了Mybatis动态传入order by问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • mysql授予用户远程访问权限的实现

    mysql授予用户远程访问权限的实现

    在默认情况下,MySQL 数据库仅允许在本地主机上进行访问,如果您需要远程连接到 MySQL 数据库,您需要授予用户远程访问权限,本文就来
    2023-11-11
  • mysql错误代码error2003的问题及解决

    mysql错误代码error2003的问题及解决

    这篇文章主要介绍了mysql错误代码error2003的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Jaspersoft Studio添加mysql数据库配置步骤

    Jaspersoft Studio添加mysql数据库配置步骤

    这篇文章主要为大家介绍了Jaspersoft Studio添加mysql数据库配置的步骤过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • mysql数据库删除重复数据只保留一条方法实例

    mysql数据库删除重复数据只保留一条方法实例

    这篇文章主要给大家介绍了关于mysql数据库删除重复数据,只保留一条的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySql InnoDB存储引擎之Buffer Pool运行原理讲解

    MySql InnoDB存储引擎之Buffer Pool运行原理讲解

    缓冲池是用于存储InnoDB表,索引和其他辅助缓冲区的缓存数据的内存区域。缓冲池的大小对于系统性能很重要。更大的缓冲池可以减少磁盘I/O来多次访问同一表数据。在专用数据库服务器上,可以将缓冲池大小设置为计算机物理内存大小的百分之80
    2023-01-01
  • select count()和select count(1)的区别和执行方式讲解

    select count()和select count(1)的区别和执行方式讲解

    今天小编就为大家分享一篇关于select count()和select count(1)的区别和执行方式讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MySQL存储过程in、out和inout参数示例和总结

    MySQL存储过程in、out和inout参数示例和总结

    这篇文章主要给大家介绍了关于MySQL存储过程in、out和inout参数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • MySQL 主主同步配置步骤

    MySQL 主主同步配置步骤

    创建同步用户、修改 /etc/my.cnf 配置文件,为其添加以下内容、分别重启服务器ODD EVEN 上的mysql服务
    2013-05-05

最新评论