面试题答案
一键面试数据结构
- 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操作。但对于范围查询和排序操作,需要全表扫描,效率很低。