• 技术文章 >数据库 >mysql教程

    深入了解MySQL中的组合索引,看看与单列索引的区别

    青灯夜游青灯夜游2021-11-03 19:29:05转载129
    本篇文章带大家了解一下MySQL中的组合索引,介绍一下创建、删除组合索引的方法,聊聊组合索引陷阱、组合索引与单列索引的区别、组合索引使用场景,希望对大家有所帮助!

    什么是组合索引

    两个或更多个列上的索引被称作联合索引,联合索引又叫组合索引。【相关推荐:mysql视频教程

    例如索引是 key index (a,b,c) 可以支持 a | a,b| a,b,c 3 种组合进行查找,但不支持 b,c 进行查找。在使用的时候,a, c 组合也可以用,但实际上只用到了 a 的索引

    1.png

    创建组合索引

    -- 普通的组合索引
    create index index_name on table_name (column1, column2, ...)
    -- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字
    create unique index index_name on table_name (column1, column2, ...)

    2.png

    删除组合索引

    -- 用法 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

    单列索引陷阱

    3.png

    4.png

    如图所示,我们创建了 2 个索引,在 where 中使用 and 进行查询是,从执行计划里看只使用到了第一个条件上的索引,后续的索引直接被忽略掉

    组合索引陷阱

    如图,现在建立组合索引 a,b,c

    5.png

    上图的条件查询为 b,a,c,mysql 会自动处理条件顺序变为 a,b,c , 再使用定义好的组合索引

    6.png

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

    7.png

    上图的查询条件是 b,c,很明显,由于没有使用 a 作为条件列,导致 mysql 没有使用组合索引

    与单列索引的区别

    联合索引中列的顺序非常重要,从左原则。

    单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

    组合索引使用场景

    更多编程相关知识,请访问:编程视频!!

    以上就是深入了解MySQL中的组合索引,看看与单列索引的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:MySQL 组合索引 索引
    上一篇:Kubernetes是什么?如何基于它部署MySQL数据库 下一篇:分析Mysql索引下推是什么?是否有助优化?
    大前端线上培训班

    相关文章推荐

    • 详解MYSQL中COLLATE的作用及各种COLLATE区别• 在Mac下进行MySQL环境搭建的两种方法• 教你在Mac下如何快速重置mysql root密码• 浅析MySQL存储引擎中的索引• php mysql怎么查询排名• php7连接mysql失败怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网