什么情况下需要创建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/MariaDB的Root密码重置教程

    MySQL/MariaDB的Root密码重置教程

    这篇文章主要给大家介绍了关于MySQL/MariaDB的Root密码重置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 浅谈MySQL在cmd和python下的常用操作

    浅谈MySQL在cmd和python下的常用操作

    下面小编就为大家带来一篇浅谈MySQL在cmd和python下的常用操作。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Mysql常用函数大全(分类汇总讲解)

    Mysql常用函数大全(分类汇总讲解)

    今天小编就为大家分享一篇关于Mysql常用函数大全(分类汇总讲解),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • CentOS6.9下mysql 5.7.17安装配置方法图文教程

    CentOS6.9下mysql 5.7.17安装配置方法图文教程

    这篇文章主要为大家详细介绍了CentOS6.9下mysql 5.7.17安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Centos7下无法远程连接mysql数据库的原因与解决

    Centos7下无法远程连接mysql数据库的原因与解决

    MySQL是由Oracle公司开发的开源SQL数据库管理系统,下面这篇文章主要给大家介绍了关于在Centos7下无法远程连接mysql数据库的原因与解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • MySQL通过自定义函数实现递归查询父级ID或者子级ID

    MySQL通过自定义函数实现递归查询父级ID或者子级ID

    这篇文章主要介绍了MySQL通过自定义函数实现递归查询父级ID或者子级ID,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Ubuntu下完美实现迁移MySQL数据库位置

    Ubuntu下完美实现迁移MySQL数据库位置

    这篇文章主要介绍了Ubuntu下完美实现迁移MySQL数据库位置,十分详细,有需要的小伙伴可以参考下
    2015-03-03
  • 详解MySQL中的死锁情况以及对死锁的处理方法

    详解MySQL中的死锁情况以及对死锁的处理方法

    这篇文章主要介绍了详解MySQL中的死锁情况以及对死锁的处理方法,文中主要讨论InnoDB存储引擎中的死锁情况,需要的朋友可以参考下
    2016-01-01
  • MySql实现跨表查询的方法详解

    MySql实现跨表查询的方法详解

    本篇文章是对MySql实现跨表查询的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MAC下MySQL初始密码忘记怎么办

    MAC下MySQL初始密码忘记怎么办

    MySQL初始密码忘记如何解决,这篇文章主要介绍了MAC下MySQL忘记初始密码的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论