MySQl索引的使用

来源:这里教程网 时间:2026-03-08 09:15:04 作者:

验证索引效率

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

   针对字段创建索引

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

索引使用

     最左前缀法则

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

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

     范围查询

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

      索引列运算

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

      字符串不加引号

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

模糊匹配

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

or连接的条件

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

数据分布影响

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

SQL提示

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

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

覆盖索引

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

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

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

前缀索引:

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

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

单列索引与联合索引

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

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

到此这篇关于MySQl 索引的使用的文章就介绍到这了,

相关推荐

热文推荐