Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql使用索引

MySQl 索引的使用

作者:05大叔

本文介绍了如何验证索引效率,包括在未建立索引和建立索引前后的耗时对比,详细解释了最左前缀法则、范围查询、索引列运算、字符串不加引号、模糊匹配、or连接的条件和数据分布对索引使用的影响,感兴趣的朋友跟随小编一起看看吧

验证索引效率

   在未建立索引之前,执行如下SQL语句,查看SQL的耗时。

   针对字段创建索引

   然后再次执行相同的SQL语句,再次查看SQL的耗时

索引使用

     最左前缀法则

      如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。(最左边的字段必须存在与位置无关)

如果跳跃某一列,索引将部分失效(后面的字段索引失效)。

     范围查询

联合索引中,出现范围查询(>,<),范围查询右侧的列索引失效

      索引列运算

不要在索引列上进行运算操作,索引将失效 (函数运算也算)

      字符串不加引号

字符串类型字段使用时,不加引号,索引将失效。

模糊匹配

如果仅仅时尾部进行模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

or连接的条件

用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。(只要有一侧没有索引,那么字段涉及的索引都不会被用到)

数据分布影响

如果MySQL评估使用索引比全表更慢,则不会使用索引;

SQL提示

SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的。

第一个使用是推荐使用,有可能被系统优化掉,第三个为强制索引

覆盖索引

尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少select*.

回表查询: 聚集索引和二级索引,现根据二级索引找到主键,再根据主键根据聚集索引查询

使用select* 很容易出先回表查询

前缀索引:

当字段类型为字符串时,有时候需要索引很长的字符串,这会让索引变得很大,查询时,浪费大量的磁盘大量的磁盘IO,影响查询效率。此时可以只将字符串的一部分前缀,建立索引,这样可以大大节约索引空间,从而提高索引效率

跟创建索引时一样,就是多了一个n,表示前缀长度

单列索引与联合索引

单列索引:即一个索引只包含单个列

联合索引:即一个索引包含了多个列

到此这篇关于MySQl 索引的使用的文章就介绍到这了,更多相关mysql使用索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文