MST

星途 面试题库

面试题:MySQL MyISAM索引方案中,BTREE索引和HASH索引有哪些主要区别?

在MySQL的MyISAM存储引擎下,BTREE索引和HASH索引是常见的索引类型,请阐述它们在数据结构、适用场景、查询效率等方面的主要区别。
50.2万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

数据结构

  • BTREE索引:基于B树(多路平衡查找树)结构。每个节点可以有多个子节点,数据按顺序存储在叶子节点,非叶子节点用于存储索引值和指向子节点的指针,方便进行范围查找。
  • HASH索引:基于哈希表结构。通过哈希函数将索引键映射到一个哈希值,根据哈希值直接定位数据所在位置,不支持范围查找。

适用场景

  • BTREE索引:适用于范围查询(如 WHERE column BETWEEN value1 AND value2)、排序(ORDER BY)以及部分模糊查询(如 LIKE 'prefix%')。常用于主键、唯一键和经常用于比较操作的列上。
  • HASH索引:适用于等值查询(如 WHERE column = value),尤其是在数据量较大且等值查询频繁的场景。但不适合范围查询、排序操作。

查询效率

  • BTREE索引:对于范围查询和排序操作效率较高,因为其数据有序存储。在等值查询时,由于需要从根节点开始逐层查找,可能需要多次磁盘I/O操作,但由于节点存储多个键值,可减少I/O次数。
  • HASH索引:在等值查询时效率极高,通过哈希函数直接定位数据,理论上只需要一次I/O操作。但对于范围查询和排序操作,需要全表扫描,效率很低。