IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 第44讲:MySQL数据库单列索引与联合索引的区别 -> 正文阅读

[大数据]第44讲:MySQL数据库单列索引与联合索引的区别

1.单列索引与联合索引

单列索引和联合索引都是常规索引的一种形式。

单列索引指的是一个索引只包含一个列,联合索引是一个索引中包含了多个列。

单列索引有一个不好的地方,如果我们查询的多个字段都是单列索引,那么此时只有一个索引会生效,其余的字段还需要回表查询才能拿到结果,不建议频繁使用单列索引。

在业务场景中,如果存在多个查询条件时,并且返回的字段也是查询条件中的字段,那么可以考虑针对这些查询的字段建立一个联合索引,尽量不是使用单列索引。

2.通过一组案例来观察单列索引和联合索引的差别

tb_user表中既有单列索引又有联合索引,通过这张表来演示他们的区别。

image-20220602104101956

1)同时对多个单列索引查询,观察效果。

xm和lxfs这两个字段都是单列索引,我们一次性查询这两个字段,观察执行计划。

mysql> explain select * from tb_user where xm = '江睿基' and lxfs = "13900090963";

从执行计划中可以看到,该条SQL可能会用到两个索引,分别是xm和lxfs字段的单列索引,但是实际用到的只有xm字段的单列索引,从这里就可以分析出,实际上只有xm字段走了索引,lxfs字段并没有走索引,那么此时就会进行回表查询,到聚集索引中拿到数据,效率不是那么高。

image-20220602104340815

2)将xm和lxfs字段做成联合索引,再观察效果。

创建联合索引。

mysql> create index idx_user_xm_lxfs on tb_user (xm,lxfs);

再次观察执行结果。

mysql> explain select * from tb_user where xm = '江睿基' and lxfs = "13900090963";

我们可以看到在可能用到的索引一列多了我们创建的联合索引,但是实际上却没有用到,用的还是单列索引,这是由于针对xm这一列既有单列索引又有联合索引,MySQL选择一个效率它认为比较高的索引。

image-20220602104830401

接下来通过SQL提示的方法,建议MySQL去使用创建的联合索引。

mysql> explain select * from tb_user use index(idx_user_xm_lxfs) where xm = '江睿基' and lxfs = "13900090963";

从执行计划中已经看到使用的是联合索引,在Extra中显示的是NULL,表示的也是不回表查询,此时效率很高。

image-20220602105146746

3.联合索引的B+Tree数据结构

联合索引的数据结构和单列索引的结构相差不大,只不过在一个索引元素中包含了多个列,在创建联合索引时,字段的顺序是非常关键的,谁在最左侧,谁就是最左前缀法则关键的字段,根据最左侧的索引字段依次遍历整个索引结构。

image-20220602103347201

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:18:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年2日历 -2024/2/29 7:05:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码