MySQL 索引篇

借鉴出处:https://blog.csdn.net/superit401/article/details/51291603

 

章节目录

  • 索引的好处
  • 索引的坏处
  • 什么情况下添加索引
  • 什么情况下不添加索引
  • 索引的添加方式

1、索引的好处

  1. 通过建立唯一索引可以保证每一行数据的唯一性
  2. 可以大大增加数据的检索速度,也就是创建索引的最主要的原因
  3. 可以加速表与表的连接,特别是在实现数据的参考完整性方面有重要意义
  4. 在实用分组和排序子句进行数据检索时,同样也可以减少分组和排序的时间
  5. 通过实用索引,可以在查询的过程中,实用优化隐藏器,提高系统的性能

 

2、索引的坏处

  第一、创建索引和维护索引消耗时间,这种时间随着数据量的增加而增加

  第二、索引需要占物理空间,除了占数据表和占数据空间外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 

  第三、当对表中的数据进行增加,修改和删除时索引也要动态的维护,这样就降低了数据的维护速度

 

3、什么样的字段适合建索引

  第一、经常要用到的列上面,可以加快搜索的速度

       第二、在作为主键的列上,强制该键的唯一性和组织表中数据的排序结构

  第三、在经常用到的连接的列上,这些列主要是一些外键。可以加快连接的速度

  第四、在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的

  第五、在经常需要排序的列上,创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间

  第六、在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度

 

4、什么情况下不添加索引

  第一、对于那些在查询中很少使用或者参考的列不应该创建索引。因为这些列很少使用,不具备创建索引的价值

  第二、对于那些只有很少数据值的列不应该增加索引。因为这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比列很大。

  第三、对于那些定义为text,image和bit数据类型的列不应该增加索引,这是因为,这些列的数据量要么相当大,要么取值很少

  第四、当修改性能远远大于检索性能时,不应该创建索引,这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能,当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索性。

 

5.1、创建索引的方法

  

  

  普通索引的创建:都是创建的方法,任选其一就可以

       

  

  创建一个唯一索引的两种方法。

  

  创建复合索引的两种方法

 

5.2、删除索引

  

  这里删除了表中名为index_sex的普通索引

  

  两种不同的方式都可以删除索引,任选其一

 

5.3、查看索引

 

  show index可以查看索引的详细信息

   

posted @ 2019-08-15 21:30  极客海  阅读(224)  评论(0)    收藏  举报