示例
示例
-- 可走索引(B 树包含 NULL 条目)
SELECT * FROM users WHERE deleted_at IS NULL;
-- 负向条件:多数情况退化为扫描
SELECT * FROM users WHERE status <> 'active';
SELECT * FROM users WHERE email NOT LIKE 'a%';
-- 改写思路:用状态枚举的正向条件替代负向条件
SELECT * FROM users WHERE status IN ('pending', 'locked');| 存储 | InnoDB 与 PG 的 B 树都会为 NULL 建立条目,IS NULL 可用索引 |
|---|---|
| 唯一索引 | MySQL 唯一索引允许多个 NULL;PG 默认同理 |
| NOT IN | 含 NULL 时结果语义易错,性能上也通常无索引可用 |