特性 | B-Tree | B+Tree |
---|---|---|
数据存储 | 所有节点都存数据 | 只叶子节点存数据 |
查询效率 | 每次访问可能命中数据 | 查询路径更稳定 |
范围扫描 | 较差 | 高效 |
分类方式 | 类型 | 说明 |
---|---|---|
按字段 | 单列索引、联合索引 | 联合索引顺序影响使用效果 |
按唯一性 | 普通索引、唯一索引 | 唯一索引约束字段不能重复 |
物理结构 | 主键索引、二级索引 | 主键索引包含整行数据(聚簇索引) |
功能 | 覆盖索引、前缀索引 | 覆盖索引避免回表;前缀索引节省空间 |
LIKE '%xxx'
模式,无法走 B+Tree 索引DATE(create_time)
会导致失效内存结构理解有助于你掌握:
+-------------------+
| 栈区(Stack) | → 局部变量、函数调用栈帧(自动分配)
+-------------------+
| 堆区(Heap) | → 动态内存 malloc/new(手动释放)
+-------------------+
| BSS段 | → 未初始化的全局变量
+-------------------+
| 数据段(Data) | → 初始化的全局/静态变量
+-------------------+
| 代码段(Text) | → 程序代码
+-------------------+
+--------------------+
| 程序计数器 | 当前线程执行位置
| 虚拟机栈 | 每个线程独立,存储栈帧
| 本地方法栈 | native 方法相关栈帧
| 堆(Heap) | 对象实例所在区域,GC管理
| 方法区(元空间) | 类元信息、常量池
+--------------------+
场景 | 索引/内存应用点 |
---|---|
数据库慢查询优化 | 索引结构、覆盖索引、索引选择性 |
JVM 性能优化 | 垃圾回收、堆区调优、逃逸分析 |
大数据量分页 | 避免 offset,使用索引游标(ID > ?) |
C 程序内存泄漏排查 | 堆管理、栈溢出检测 |
多线程内存可见性问题(Java) | JVM 内存模型、volatile、happens-before |