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+ 树中大概能存放多少条索引记录?
  • 第六章 范式

    • 6.1 范式
  • 第七章 日志

    • 7.1 日志
  • 第八章 事务

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

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

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

5.1 索引

索引是帮助 MySQL 高效获取数据的数据结构。

索引用于快速查找具有特定值的行。如果没有索引,MySQL 必须从第一行开始,然后遍历整个表来找到相应行。表越大,成本就越高。如果表有相关列的索引,MySQL 就可以快速确定要在查找的位置,无需查看所有数据,这比顺序读取每一行要快的多。

5.1.1 索引分类

主键索引

​ 唯一的标识,主键不可重复,只能有一个列作为主键。

唯一索引

​ 避免重复的列出现,唯一索引可以重复。

聚簇索引

提示

When you define a PRIMARY KEY on a table, InnoDB uses it as the clustered index. A primary key should be defined for each table. If there is no logical unique and non-null column or set of columns to use a the primary key, add an auto-increment column. Auto-increment column values are unique and are added automatically as new rows are inserted.

非聚簇索引

什么是聚簇索引?

B+ 树的叶子结点存储的是完整的用户记录,也就是所有列的值(包括隐藏列)。

什么是二级索引?

B+ 树的叶子结点存储的是某一列 + 主键的的值。

什么是联合索引?

联合索引能减少扫描行数

索引的代价

空间代价

每建立一个索引,都要为它建立一颗 B+ 树。每一颗 B+ 树的每一个结点都是一个数据页,一个数据页会默认占用 16KB 的存储空间。

时间代价

每当对表中的数据进行增删改操作时,都需要修改各个 B+ 树索引。

索引的基本原理

索引就相当于目录,方便查找书的内容。

编辑此页
上次更新:
Next
5.2 一个 B+ 树中大概能存放多少条索引记录?