首页 > 解决方案 > postgresql 中的索引

问题描述

首先,我在数据库USERS中有一个表,其中包含近 3000 万条记录。我对每一列都有不同的索引。但是有些列只有 2 到 3 个非空值,而其他列是空值,但它们的索引大小仍然是 847 MB​​,比每行包含唯一值的一个索引小一点。

谁能知道为什么会这样?

其次,在 PostgreSQL 中,我们默认为每一列的主键索引都有一个索引,如果我们删除该索引会发生什么后果?该索引的真正用途是什么?当我仅根据其他列中的值进行搜索时,删除主键的索引是否安全?

标签: postgresqldatabase-indexes

解决方案


NULL 值与所有其他值一样存储在索引中,因此第一部分并不奇怪。

您不能删除主键索引,您可以做的是删除主键约束。但是你不能确定没有重复的行被添加到表中。如果您认为这没有问题,请查看许多寻求帮助的问题。

每个表都应该有一个主键。

但是,如果您不需要它们,那么摆脱一些其他索引可能是一个好主意。


推荐阅读