深入了解MySQL中的组合索引,看看与单列索引的区别
时间:2021-11-15
来源:互联网
今天PHP爱好者为您带来本篇文章带大家了解一下MySQL中的组合索引,介绍一下创建、删除组合索引的方法,聊聊组合索引陷阱、组合索引与单列索引的区别、组合索引使用场景,希望对大家有所帮助!希望对大家有所帮助。
什么是组合索引
两个或更多个列上的索引被称作联合索引,联合索引又叫组合索引。
例如索引是 key index (a,b,c)
可以支持 a | a,b| a,b,c
3 种组合进行查找,但不支持 b,c
进行查找。在使用的时候,a, c
组合也可以用,但实际上只用到了 a
的索引
创建组合索引
-- 普通的组合索引
create index index_name on table_name (column1, column2, ...)
-- 组合要求唯一的索引,相比与上一种,多出了 关键字
create unique index index_name on table_name (column1, column2, ...)
删除组合索引
-- 用法 1
drop index index_name on talbe_name
-- 用法 2
alter table table_name drop index index_name
-- 用法 3,对 2 的包装
alter table table_name drop primary key
单列索引陷阱
如图所示,我们创建了 2 个索引,在 where 中使用 and
进行查询是,从执行计划里看只使用到了第一个条件上的索引,后续的索引直接被忽略掉
组合索引陷阱
如图,现在建立组合索引 a,b,c
上图的条件查询为 b,a,c
,mysql 会自动处理条件顺序变为 a,b,c
, 再使用定义好的组合索引
上图的查询条件是 b,a
,同样的,mysql 调整条件顺序为 a,b
,再走组合索引
上图的查询条件是 b,c
,很明显,由于没有使用 a
作为条件列,导致 mysql 没有使用组合索引
与单列索引的区别
联合索引中列的顺序非常重要,从左原则。
单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。
组合索引使用场景
where 条件会经常出现的,并且当前表的数量比较大。
where 条件中是用
and
而非or
的时候。联合索引比单个索引更适合,因为索引占用一定磁盘空间,也就说明有一定的开销,如果多个单个索引比较多,那么多资源的浪费也比较多,联合索引相当于对多个列建索引,并且只建一次,and 条件下非常适合。
以上就是深入了解MySQL中的组合索引,看看与单列索引的区别的详细内容,更多请关注php爱好者其它相关文章!
-
WebStorm干嘛用的 WebStorm和VSCode哪个好用 时间:2025-09-13
-
PyCharm详细的安装及使用教程 时间:2025-09-13
-
PyCharm是干什么用的 PyCharm和Python的区别 时间:2025-09-13
-
PHP运行环境的搭建方法及流程详解 时间:2025-09-13
-
PHPstorm环境配置与应用 PHPstorm怎么配置PHP环境 时间:2025-09-13
-
PHP date()函数详解(定义、语法、用法) 时间:2025-09-13
今日更新
-
天空梗是什么梗?揭秘网络爆火天空表情包的搞笑起源与玩法
阅读:18
-
想知道天籁是什么梗?揭秘网络热词天籁的爆笑来源和流行用法!
阅读:18
-
想知道天蓝怪是什么梗吗?揭秘这个火爆网络的神秘热词,让你秒懂潮流!
阅读:18
-
天蓝怪行为是什么梗?揭秘网络爆火神秘现象背后的搞笑真相!
阅读:18
-
重返未来:1999新角色野树莓-野树莓抽取建议
阅读:18
-
以闪亮之名全新主线之旅-章节第36章即将开启
阅读:18
-
梦幻西游恶魔泡泡怎么获得-恶魔泡泡获取方法
阅读:18
-
崩坏星穹铁道3.6版本新内容公布-可免费获五星角色
阅读:18
-
天雷滚滚是什么梗?揭秘网络热词背后的爆笑名场面
阅读:18
-
如鸢袁基大活月海夜航船活动-1-16关入夜详细
阅读:18