CSNotesCSNotes
TODO
LeetCode
数据结构
计算机组成原理
操作系统
计算机网络
数据库
Java
SSM
React
实用工具
GitHub
TODO
LeetCode
数据结构
计算机组成原理
操作系统
计算机网络
数据库
Java
SSM
React
实用工具
GitHub
  • 第一章 SQL语法

    • 1.1 数据库
    • 1.2 MySQL 语法
    • 1.3 查询
    • 1.4 什么是 join?
    • 1.5 LIKE 操作符
    • 1.6 分组
    • 1.7 字段都有哪些属性
  • 第二章 了解 SQL

    • 2.1 数据库基础
    • 2.2 数据库范式
    • 2.3 字符集
    • 2.4 数据库概念
    • 2.5 最大行大小
  • 第三章 数据库概念

    • 3.1 一条 SQL 语句是如何执行的?
    • 3.2 InnoDB 行格式
    • 3.3 为什么数据库 VARCHAR 字段上限是 16383?
  • 第四章 数据库数据结构

    • 4.1 数据库数据结构
  • 第五章 索引

    • 5.1 索引
    • 5.2 一个 B+ 树中大概能存放多少条索引记录?
    • 5.3 什么是 MySQL 最左匹配原则?
    • 5.4 索引失效
  • 第六章 范式

    • 6.1 范式
  • 第七章 日志

    • 7.1 日志
  • 第八章 事务

    • 8.1 事务简介
    • 8.2 事务
  • 第九章 InnoDB 页

    • 9.1 InnoDB 页
  • 第十章 常见面试题

    • 10.1 数据库存储索引为什么不用二叉排序树,不用红黑树,而用 B+ 树?
    • 10.2 为什么 InnoDB 中 B+ 树一个结点的页设置为 16KB

5.3 什么是 MySQL 最左匹配原则?

为什么使用联合索引?

  • 减少开销。创建一个联合索引 (col1,col2,col3),实际相当于建了 (col1),(col1,col2)

,(col1,col2,col3) 三个索引。每多一个索引,都会增加写操作的开销和磁盘空间的开销。对于大量数据的表,使用联合索引会大大减少开销。

  • 覆盖索引。对联合索引 (col1,col2,col3),如果有如下 SQL:select col1,col2,col3 from test where col1=1 and col2=2;那么 MySQL 可以直接通过遍历
  • 效率高。索引列越多,通过索引筛选出的数据越少。有 1000w 条数据的表。有如下的 SQL:select * from table where col1=1 and col2=2 and col3=3;,假设每个条件可以筛选出 10% 的数据,如果只有单值索引,那么通过索引筛选出$1000w10%=100w$条数据,再回表从 100w 条数据中找到符合 col2=2 and col3=3 的数据,然后再排序,分页;如果是联合索引,通过索引筛选出 $1000w10%*10%*10%=1w$
编辑此页
上次更新: 2024/5/12 22:30
Prev
5.2 一个 B+ 树中大概能存放多少条索引记录?
Next
5.4 索引失效