dev.to | 📄 原文链接 | 2026-08-23 收录

构建 SaarDB 第 8 部分:二级索引

来源:dev.to — 2026-08-22

📋 概述

在上一部分实现主键查找与全表扫描之后,作者开始给这个 Go 数据库 SaarDB 加二级索引。先指出"索引值→主键列表"的暴力方案的三宗罪:写入变慢(读-改-写循环)、并发热点键、值膨胀(空间放大)。正确做法是为每个(列值, 行)分配独立键,键格式 index:<表>:<列>:<值>:<主键>,且列值必须排在主键前以保证前缀扫描的排序相邻性。进一步介绍复合索引(支持最左前缀规则)、索引覆盖扫描(index-only scan,避免随机 GET),并用 M1 Pro 基准展示高基数 1 万行时约 903 倍加速,同时也说明当查询命中大比例行时全表扫描反而更快。

🔑 核心要点

💡 金句

我们如何设计键来保证那种相邻性,这才是全部问题所在。
← 返回 dev.to 首页