1. BRIN 与 B-Tree 的取舍,写入性能 vs 查询精度?
BRIN 与 B-Tree 的取舍是什么?写入性能 vs 查询精度?
- BRIN 特性
- B-Tree 特性
- 写入 vs 查询
BRIN(Block Range Index)与 B-Tree 的取舍:BRIN 只存每个块范围(block range)的 min/max 摘要,索引极小、写入开销小(几乎不影响写入性能),适合自然有序的大表;但查询精度低,需扫描整个块范围过滤,可能读多块。B-Tree 存每个键,查询精确、精度高,但索引大、写入开销大(页分裂)。切换:数据量大、按有序列(时间)查询、写入频繁用 BRIN(快写入、小索引);需要精确点查、高选择性用 B-Tree。
BRIN 用"小索引快写入"换"查询精度",B-Tree 相反。有序大表用 BRIN,精确点查用 B-Tree。
-- BRIN:时间序列大表
CREATE INDEX idx ON logs USING brin (created_at);
-- B-Tree:精确点查
CREATE INDEX idx ON orders USING btree (order_id);