根据数据特征推荐索引类型
B-Tree 查找路径动画
索引失效场景自检
10 种典型失效场景速查
| 写法 | 问题 | 修复 |
|---|---|---|
| WHERE LOWER(email) = ? | 函数包裹列 | 建表达式索引 ON t(LOWER(email)) |
| WHERE DATE(ts) = '...' | 函数包裹列 | 改 ts >= '...' AND ts < '...+1' |
| WHERE amount + 10 > 100 | 表达式左侧非纯列 | 改 amount > 90 |
| WHERE id = '42' (id 是 BIGINT) | 隐式类型转换 | 参数类型对齐 |
| WHERE name LIKE '%abc%' | 中/后模糊 | pg_trgm + GIN/GiST |
| WHERE a=1 OR b=2 | OR 可能退化 | BitmapOr 或改 UNION ALL |
| WHERE status = 'paid' (90% 行) | 选择度太低 | 部分索引 WHERE status <> 'paid' |
| WHERE tag @> '[...]' | B-Tree 不支持 | GIN 索引 |
| WHERE b = ? (索引是 (a,b,c)) | 越过最左前缀 | 调整列顺序或加 (b) 索引 |
| NOT IN (subq) 且 subq 含 NULL | 整句变空集 | 改 NOT EXISTS |