本篇文章带大家了解一下mysql中的组合索引,介绍一下创建、删除组合索引的方法,聊聊组合索引陷阱、组合索引与单列索引的区别、组合索引使用场景,希望对大家有所帮助!

什么是组合索引
两个或更多个列上的索引被称作联合索引,联合索引又叫组合索引。【相关推荐: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, ...)-- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字create unique index index_name on table_name (column1, column2, ...)

删除组合索引
-- 用法 1drop index index_name on talbe_name-- 用法 2alter 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 , 再使用定义好的组合索引
纳米搜索
纳米搜索:360推出的新一代AI搜索引擎
30 查看详情

上图的查询条件是 b,a,同样的,mysql 调整条件顺序为 a,b,再走组合索引

上图的查询条件是 b,c,很明显,由于没有使用 a 作为条件列,导致 mysql 没有使用组合索引
与单列索引的区别
联合索引中列的顺序非常重要,从左原则。
单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。
组合索引使用场景
where 条件会经常出现的,并且当前表的数量比较大。
where 条件中是用 and 而非 or 的时候。
联合索引比单个索引更适合,因为索引占用一定磁盘空间,也就说明有一定的开销,如果多个单个索引比较多,那么多资源的浪费也比较多,联合索引相当于对多个列建索引,并且只建一次,and 条件下非常适合。
更多编程相关知识,请访问:编程视频!!
以上就是深入了解MySQL中的组合索引,看看与单列索引的区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/288968.html
微信扫一扫
支付宝扫一扫