面试题答案
一键面试索引减少扫描额外记录的原理
- 索引的数据结构:MySQL 常用的索引数据结构是 B+ 树。以 B+ 树为例,B+ 树叶子节点包含了索引列的值以及对应的行数据的物理地址(或者主键值,通过主键再回表获取完整数据)。
- 查找过程:当进行查询时,数据库首先在索引树中查找,因为索引树是有序的,它可以通过二分查找等高效算法快速定位到目标数据所在的位置。比如要查找某个特定值,它从根节点开始,比较索引值与节点值的大小,决定向左子树还是右子树继续查找,直到找到叶子节点。这个过程大大减少了需要扫描的数据量,相比全表扫描,只需要扫描索引树中很少的节点,就可以定位到数据的位置,而不是扫描整个表的数据记录,从而减少了扫描额外记录。
在 users
表上创建合适索引减少对 name
字段查询扫描额外记录的方法
可以使用以下 SQL 语句在 users
表的 name
字段上创建索引:
CREATE INDEX idx_name ON users (name);
这样,当执行如 SELECT * FROM users WHERE name = '具体名字';
的查询时,MySQL 可以通过 idx_name
索引快速定位到满足条件的记录,而不需要全表扫描,减少了扫描额外记录的开销。