【发布时间】:2022-08-16 16:13:52
【问题描述】:
我有一个包含 1m 条记录的表,其中 100k 条记录在 colA 上为空。其余记录具有非常不同的值,在此列上创建常规索引与使用where colA is not null 创建部分索引有区别吗?
既然普通的 Postgres 索引不存储 NULL 值,那不就和用where colA is not null 创建部分索引一样吗?
任何一个索引都有什么优点或缺点?
-
好问题。我不确定 PostgreSQL 是否排除空值。我知道 Oracle 没有,但我的印象是 PostgreSQL 包含它们。
-
任一索引的有用性在很大程度上取决于查询的细节、它们的频率和优先级、确切的表定义、写入频率和表的
VACUUM、数据类型和平均值。colA的大小(与平均行大小相比)和(附加)基数。
标签: postgresql indexing null partial-index