技术与生活 / 一篇记录
加索引之前,先看查询怎么找数据
索引更像辅助查找结构,不是所有查询的加速按钮。过滤条件、排序方式和数据分布都会影响收益,维护索引也会增加插入与更新成本。
索引适合帮助定位记录,但会增加写入成本和存储占用。
实际怎么检查
查询示例以 SQLite 为例;notes 为测试表,包含 id、title、score、category、created_at 字段。
CREATE INDEX idx_notes_category ON notes(category);
结合查询计划观察分类查询是否使用索引。
遇到异常再检查什么
用具有代表性的数据量比较计划和执行时间。不要因为某个小样本变快,就给每个字段都加索引;写入负载和磁盘占用也需要一起观察。
复合索引还涉及字段顺序。一个为特定过滤与排序组合设计的索引,并不一定同样适合只使用其中任意一列的查询。评估时应围绕真实查询模式,而非字段数量。
小表或低选择性条件下,不走索引不一定是异常。
参考:SQL 文档。