MySQL 索引失效及使用索引的优缺点

栏目: 数据库 · 发布时间: 4年前

内容简介:本文所有实验基于MySQL5.7.21,实验将会用到Explain工具,不了解的同学可参考此文章:联合索引失效先创建一个包含三个字段的联合索引,索引顺序如下:

本文所有实验基于 MySQL 5.7.21,实验将会用到Explain工具,不了解的同学可参考此文章: MySQL性能优化神器Explain详解

联合索引失效

先创建一个包含三个字段的联合索引,索引顺序如下:

MySQL 索引失效及使用索引的优缺点

由以下三张图的key_len字段我们可以得出三个索引的长度分别为:title长303,author长122,price长5.

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

联合索引使用时遵循最左匹配原则,如果不是从最左列开始时,整个索引失效,如果最左匹配则依次往右使用索引,直到碰到不匹配的地方之后生效之前匹配到的索引

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

范围查询会引起索引失效

为以上联合索引更换字段顺序为title,price,author。如果查询时包含范围查询则范围字段后面的字段失效

MySQL 索引失效及使用索引的优缺点

like查询失效

使用模糊查询时,%只有在最右方的时候才能生效

为title设置一个单独的索引

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

查询中含有不等于或者or则索引不生效

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

在索引列上做计算或函数导致失效

删除刚才创建的联合索引,为price字段创建一个单独的索引

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

字符串类型不加引号同样会失效

MySQL 索引失效及使用索引的优缺点

is null和 is not null

为title字段创建一个单独的索引

MySQL 索引失效及使用索引的优缺点

MySQL 索引失效及使用索引的优缺点

注意事项

在进行索引使用测试时,可能会因为测试数据太少从而MySQL会认为查询语句走全表扫描比走索引更有效,所以会自动去除索引,为避免测试结果误导可使用如下方式强制MySQL使用索引

explain select * from book FORCE index(索引名称) where price=1+1;

使用索引的优点

  • 唯一索引或主键索引可以保证数据库表的唯一性

  • 可以提高查询效率和性能

  • 加速表连接的速度

  • 加快 排序 的效率

使用索引的缺点

  • 每次更新修改删除都需要维护索引、从而消耗性能

  • 索引文件会占用物理空间

MySQL 索引失效及使用索引的优缺点

万水千山总是情,点个 “在看” 行不行!!!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Web Design

Head First Web Design

Ethan Watrall、Jeff Siarto / O’Reilly Media, Inc. / 2009-01-02 / USD 49.99

Want to know how to make your pages look beautiful, communicate your message effectively, guide visitors through your website with ease, and get everything approved by the accessibility and usability ......一起来看看 《Head First Web Design》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具