Mysql数据库索引底层数据结构和算法
索引
索引是帮助Mysql高效获取数据的排好序的数据结构
常用的数据结构
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
-
二叉树
-
红黑树
-
Hash
-
B-tree
-
B+tree
聚集索引和非聚集索引
- 聚集索引:叶子节点直接存储这条数据的其他字段
- 非聚集索引:叶子节点的data指向该条数据的物理地址
联合索引
- 最左列前缀原理
- 因为索引是排好序的物理结构,所以联合索得先用前面的字段才能用到索引
数据库引擎
MyISAM
- 非聚集索引
".MYI"文件存储的索引(B+树)
".MYD"文件存储的数据
InnoDB
- 只有主键为聚集索引,其他非主键索引为非聚集索引
- 为什么推荐InnoDB必须建主键?推荐整型的自增主键
-
- InnoDB是用的B+树来保存数据,如果不建主键,mysql会选取一列值都不相同的列做为主键,如果没有找到会创建一个隐形列为主键存储数据
-
- 自增插入效率高,避免分裂和树做平衡
-
- 整型主键在新插入数据在比较时,比UUID效率高,并且存储空间小
- 整型主键在新插入数据在比较时,比UUID效率高,并且存储空间小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性