数据库-mysql-索引

思考维度

树越矮(节点存储的索引值越多),查越快

知识点

【MySQL】聚集索引和非聚集索引

刷题

为什么索引的数据结构不可以是红黑树?

因为数据量大,红黑树会很高,磁盘IO次数多

B树和B+树的区别?

1.B树的非叶子节点除了索引值,还有其他字段值;B+树的非叶子节点只有索引值

2.B+树的叶子节点是双向链表结构;B树的叶子节点之间没有联系

B+树查找某一个索引值的过程

将根节点(页 16k)load到内存,二分查找,如果找到就结束,找不到就继续load节点

高度为3的B+树大概能存储多少行记录?

一个非叶子节点大概能存储几个索引值:16KB/(8B+6B)=1170

一个叶子节点大概能存储几行记录:16KB/1KB=16

1170117016=2000W

为什么IndoDB存储引擎的索引数据结构不用B树?

B树的缺点:B树的非叶子节点也会存储数据,这样会让每个节点可以存储的索引值变少,树变高

存储引擎是表维度的,还是数据库维度的?

表维度的

因为在定义表结构的时候,可以选择存储引擎

MyIsam和IndoDB的区别?

MyIsam的数据和索引是分开存储的;InnoDB的数据和索引是存储在一个文件

MyIsam的叶子节点的数据存储的是记录的物理地址;InnoDB的叶子节点的数据存储的是记录(聚簇索引)

为什么建议InnoDB表要加主键?

如果不加主键,mysql会选一列(没有重复值的 如果全都有重复,则新增一个字段)作为主键

这种事情我们自己做就好了,不要交给mysql

为什么推荐整型自增主键?

整型:比较大小更快(B+树)

自增:乱序插入会引起B+树的分裂和合并,顺序插入只会新增节点

索引使用Hash表不可以么?

缺点:hash只有=和in操作快,其他都需要全表扫描

聚集索引和非聚集索引

聚集索引是InnoDB的;非聚集索引是MyIsam的

主键索引和二级索引

InnoDB:主键索引的叶子的值是主键,数据是记录;二级索引的叶子的值是非主键字段,数据是主键

为什么二级索引的叶子的数据是主键,而不是记录?

节省存储

一致性

为什么索引要满足最左前缀原则?

(a,b,c)

如果查询条件是where b = 1 and c = 2

只有在a相等的情况下,b才是有序的

相关推荐
睡不醒男孩0308233 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
Micro麦可乐5 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
码农阿豪5 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
鼎讯信通6 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..6 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
cfm_29147 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
真实的菜7 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
你想考研啊8 小时前
mysql数据库导出导入
数据库·mysql·oracle
十年编程老舅8 小时前
Linux DRM:底层逻辑与实践架构
数据库·mysql
The Sheep 20239 小时前
Vue复习
linux·服务器·数据库