我是靠谱客的博主 开放鼠标,最近开发中收集的这篇文章主要介绍mysql使用索引的缺点_MySQL 索引失效及使用索引的优缺点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

联合索引失效

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

400129e315c77d9dd6658b1b4add56e9.png

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

ffcb76e2d3b1f651c5f94f81bcf0870b.png

4cc151fd6e0ebc1b01a38ad7be8f368a.png

ca57468f15bc568cb2a6d4e5b4b5f115.png

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

2967919699fdd03b78936ad53e67dd1b.png

4652cbe255b85be10ae9847c2c646944.png

范围查询会引起索引失效

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

c6426b01c96ec29a2c8e2f060cccdbbf.png

like查询失效

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

为title设置一个单独的索引

88b2d76f472934d1cba73f50f6bae064.png

b894aff5cc122ee0af622e471750f3fa.png

1a0c5e1694e4fef9c69231989d06cf42.png

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

fd6e168263b5dc0d64a3637abe7e7766.png

a4571faa81cabb35850fd3c013eefc8b.png

0c11d48764dd57678b88aef9594db566.png

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

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

e07dd208f649634192ac18945a55c852.png

80fbeb16c90f78015b5c405ec004bbd0.png

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

0c997396421ab0c569a9fb5566ca2ea8.png

is null和 is not null

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

3e2fe53264dc59690c9cc83d63f46859.png

9ea96914c9eda1a003e05ffdebd7edee.png

注意事项

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

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

使用索引的优点

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

可以提高查询效率和性能

加速表连接的速度

加快排序的效率

使用索引的缺点

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

索引文件会占用物理空间

0411ac0f05f03c7a861544d95a83bf38.png

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

最后

以上就是开放鼠标为你收集整理的mysql使用索引的缺点_MySQL 索引失效及使用索引的优缺点的全部内容,希望文章能够帮你解决mysql使用索引的缺点_MySQL 索引失效及使用索引的优缺点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部