一、MySQL 为什么使用 B+ 树?
与B+ 树相比,平衡二叉树、红黑树在同等数据量下,高度更高,性能更差,而且它们会频
繁执行再平衡过程,来保证树形结构平衡。
与B+ 树相比,跳表在极端情况下会退化为链表,平衡性差,而数据库查询需要一个可预期
的查询时间,并且跳表需要更多的内存
与B+ 树相比,B 树的数据存储在全部节点中,对范围查询不友好;非叶子节点存储了数
据,导致内存中难以放下全部非叶子节点,可能需要磁盘IO;
二、MySQL 对 NULL 值的索引支持特点如下:
索引会存储并支持 NULL 值
查询条件 IS NULL 和 IS NOT NULL 可以利用索引。
- 与其他数据库相比,MySQL 的索引对 NULL 的支持更完善且优化更好。
索引的优化
优化方面:sql本身优化、服务器/引擎(配置)优化、操作系统优化、硬件资源问题
1、sql优化达到的目的:
减少磁盘IO:避免全面扫描、使用索引(覆盖索引)
减少内存cpu消耗:尽可能减少排序、分组、去重之类的操作
修改索引或者说表定义变更的核心问题是数据库会加表锁,直到修改完成