45 如果表中有字段为null,又被经常查询该不该给这个字段创建索引?
- 频繁查询 nul 值:null值占比不高,可以为该字段创建索引。
where column IS NULL
- NULL值占比极高:若字段大部分值为nul,索引可能不会显著提升性能,甚至可能因回表开销导致性能下降。
- 联合索引优化:若字段常与其他非 null 字段组合查询,可考虑创建联合索引。
where column1 is null and column2 = ‘value’
46 有字段为null索引是否会失效?
不一定失效
查询条件的影响
-
is null 或 is not null
- 若 null 值占比低,优化器可能使用索引定位数据
- 若 null 值占比极高,优化器可能放弃索引而选择全表扫描。
-
= 或 <> 操作符
- column = nul 不会使用索引(需要 is null)
- column <> null 可能因 nul 不参与比较导致索引失效
-
复合索引中的 nul 值
- 若复合索引的前导列包含 null, 后续列的索引可能无法有效利用。
最好还是给上默认值
数字类型的给0,字符串给个空串“”,