MySQL建立联合索引 及其失效原理讲解

server/2024/9/23 4:10:14/

前言

在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。
mysql使用联合索引时,需要注意的是联合索引的最左匹配原则。

mysql联合索引原理及失效原理

MySQL 联合索引(也称为复合索引或组合索引)是指在数据库表中对多个列进行索引的索引方式。联合索引的优点是可以通过索引优化查询性能,特别是对于多列查询时可以避免全表扫描。

联合索引的原理是通过对多个列的值进行排序来创建一个B-Tree结构,这样可以在查询时使用这些列作为过滤条件来快速定位记录。

联合索引失效是指当查询条件不满足联合索引的顺序或使用了范围查询(如BETWEEN><等)时,联合索引可能不会被使用,这时查询性能可能会下降。

没有遵守最左匹配原则,使用like、%和or 等情况下索引也会失效。

例如,如果有一个联合索引(col1, col2),下面的查询条件会使用到这个索引:

SELECT * FROM table WHERE col1 = 'value1' AND col2 = 'value2';

但是,如果查询条件改变顺序或使用了范围查询,则可能不会使用这个索引: 

-- 顺序不匹配,不会使用索引
SELECT * FROM table WHERE col2 = 'value2' AND col1 = 'value1';-- 使用了范围查询,可能不会使用索引
SELECT * FROM table WHERE col1 = 'value1' AND col2 > 'value2';

 为了确保联合索引的有效使用,可以通过调整查询条件的顺序来保持和索引一致,或者对于需要范围查询的列,确保查询能够使用索引的最左前缀特性。

联合索引的好处

  • 减少索引建立的开销,建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引;
  • 覆盖索引 无需回表,这减少了很多的随机io操作;所以,在真正的实际应用中,覆盖索引是主要的提升性能的优化手段之一。
  • 缩小筛选范围。

http://www.ppmy.cn/server/20018.html

相关文章

虚拟化+docker概念

目录 一&#xff0e;虚拟化简介 1.1 虚拟化概述 1.2 耦合与解耦合 1.2.1 耦合 1.2.2 解耦合 1.2.3 小结 1.3 虚拟化作用 1.4 两大核心组件&#xff1a;QEMU、KVM 1.4.1 QEMU 1.4.2 KVM 1.4.3 虚拟化类型 1.4.4 虚拟化功能 二、Docker 概述 2.1 Docker 是什么 2.2…

鸿蒙 harmonyos 线程 并发 总结 async promise Taskpool woker(三)多线程并发 Worker

Worker Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程&#xff0c;Worker自身的线程称之为Worker线程。创建Worker传入的url文件在Worker线程中执行&#xff0c;可以处理耗时操作但不可以直接操作UI。 Worker主要作用是为应用程序提供一个多线程的运行环境…

十一、Yocto集成tcpdump等网络工具

文章目录 Yocto集成tcpdump等网络工具networking layer集成 Yocto集成tcpdump等网络工具 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十一篇文章&#xff1a; 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi 4B) 三、Yocto创建自定义的lay…

抖音 小程序 获取手机号 报错 getPhoneNumber:fail auth deny

这是因为 当前小程序没有获取 手机号的 权限 此能力仅支持小程序通过试运营期后可用&#xff0c;默认获取权限&#xff0c;无需申请&#xff1b; https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/guide/open-capabilities/acquire-phone-number-acqu…

深入理解冯诺依曼体系结构

文章目录 冯诺依曼体系结构概念冯诺依曼体系结构的优势冯诺依曼体系结构的现实体现 冯诺依曼体系结构概念 冯诺依曼体系结构也称普林斯顿结构&#xff0c;是现代计算机发展的基础。它的主要特点是“程序存储&#xff0c;共享数据&#xff0c;顺序执行”&#xff0c;即程序指令和…

【介绍下IDM的实用功能】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Edge浏览器:使用心得与深度探索

一、导言 随着互联网的发展&#xff0c;Web 浏览器已经成为我们日常生活中不可或缺的工具之一。Microsoft Edge 作为微软推出的全新浏览器&#xff0c;在不断地更新迭代中&#xff0c;逐渐获得了用户的青睐。本文将分享我对 Edge 浏览器的使用心得&#xff0c;并深度探索其特色…

Stable Diffusion入门指南

SD 保姆教程&#xff0c;从原理功能到案例输出展示&#xff0c;最后简述 ControlNet 的使用技巧。 Stable Diffusion 的基本介绍 Stable Diffusion是一种基于扩散过程的图像生成模型&#xff0c;可以生成高质量、高分辨率的图像。它通过模拟扩散过程&#xff0c;将噪声图像逐…