“索引不仅仅是加上一行 CREATE INDEX。在 2026 年,它是一门空间与时间的平衡艺术。”
随着 PostgreSQL 18 的异步 I/O 引擎实装以及 JSONB 的爆发式应用,优化规则已经改变。如果你还在依赖默认的 B-Tree 索引,你可能浪费了 50% 以上的硬件性能。
2026 年索引速查表
| 索引类型 | 推荐场景 (2026) |
|---|---|
| B-Tree | 标准等值 (=) 及 范围查询。PG18 针对 UUIDv7 进行了专项优化。 |
| GIN | 必选 。用于 JSONB (@>)、数组及全文检索。 |
| BRIN | “大数据”索引。适用于按时间顺序排列的 100GB+ 巨型表。 |
| GiST | 地理空间数据 (PostGIS) 及 具有重叠性质的范围类型。 |
⚠️
生产环境金科玉律
在生产环境运行索引创建时,请务必使用 CONCURRENTLY。锁死一个核心业务表足以让你面临重大事故风险。
JSONB 性能:混合动力策略
极致技巧:jsonb_path_ops
默认的 GIN 索引会记录每一个 K-V。如果你只需要简单的包含判定 (@>),请切换到 jsonb_path_ops 以获得更小的索引体积和更快的查询速度。
-- 更快、更轻的索引
CREATE INDEX idx_data_path ON events USING GIN (payload jsonb_path_ops);
连接池:Supavisor 的统治力
在 2026 年,Serverless 架构已是主流。
- Supavisor : 云原生时代的首选。基于 Elixir 构建,轻松应对百万级连接。
- PgBouncer : 轻量级老兵。在低配 VPS 或嵌入式环境依然有生命力。
总结:敬畏数据
Postgres 可以承载 PB 级的数据量,前提是你的索引有明确的设计意图。不要把数据库当成单纯的垃圾桶,要把它当成精密的“状态引擎”。






⚠️ コメントのルール
※違反コメントはAIおよび管理者により予告なく削除されます
まだコメントがありません。最初のコメントを投稿しましょう!