Postgres:是否有必要为“where is null”选择查询添加索引?

时间:2018-04-26 18:39:47

标签: sql postgresql indexing

给出一个表格,例如:


id  name  emailed_at
1   Foo   2018-01-01
2   Bar   NULL

是否有必要向emailed_at添加索引以进行高效SELECT * FROM people WHERE emailed_at IS NULL查询?

更新: 实际的表有大约12列,数十万行,只有最近的(〜1天)记录在该字段中应该为NULL。

1 个答案:

答案 0 :(得分:3)

对于两行,根本没有性能问题。对于大型表,索引会有所帮助。 IS NULL与任何其他“平等”比较相同。它可以利用索引。

索引的好处是当表跨越多个(多个?)数据页时。索引通常会减少需要处理的数据页数。如果很多emailed_at记录都是NULL(例如在您的示例中为50%),那么任何给定页面可能会有NULL个值 - 并且索引要少得多是有用的。