您现在的位置是:群英 > 数据库 > MySQL数据库
MySQL组合索引怎样理解,如何创建?
Admin发表于 2021-11-13 17:39:581900 次浏览

    这篇文章给大家分享的是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, ...)

删除组合索引

-- 用法 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组合索引是什么以及MySQL组合索引的创建、删除操作应该都有所了解了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多MySQL数据库的内容,大家可以关注群英网络其它相关文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: mysql组合索引
相关信息推荐
2022-04-27 11:27:03 
摘要:给大家带来一篇关于详解MySQL如何批量去掉某个字段中的空格的相关教程文章,内容涉及到mysql、去掉字段空格、MySQL批量去掉某个字段中的空格等相关内容,更多关于MySQL批量去掉某个字段中的空格的内容希望能够帮助到大家。
2021-12-09 17:47:26 
摘要:这篇文章给大家分享的是SQL中自增主键的相关内容,介绍了自增值修改机制、自增值的修改时机、自增锁的优化方法等等,文中介绍的非常详细,对大家深入理解SQL中自增主键有一定的帮助,感兴趣的朋友接下来一起跟随小编了解看看吧。
2022-05-13 16:38:37 
摘要:oracle对象有:1、表(Table);2、索引(Index);3、簇(Cluster);4、视图;5、Synonym;6、序列(Sequence);7、过程(Procedure)和函数(Function);8、触发器;9、约束等。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部