Postgres:未选择的行会影响性能吗?

时间:2017-03-07 17:29:53

标签: database postgresql indexing

我的主要问题是,在单个表中,WHERE子句中未包含的记录数会影响SELECTINSERTUPDATE的查询效果?

假设我有一个包含2000万行的表,并且该表有一个索引error字符串列。

假设这些记录中有19,950,000条记录为此列设置了0,而将50,000条记录设置为NULL

我的查询SELECT * FROM pending_emails WHERE error IS NULL

在我的应用程序中出现一些逻辑后,我需要按ID更新这些相同的记录以设置错误:

UPDATE "pending_emails" SET "error" = '0' WHERE "pending_emails"."id" = 46
UPDATE "pending_emails" SET "error" = '0' WHERE "pending_emails"."id" = 50

我试图确定是否可以离开'已完成'数据库中的记录不会影响我正在使用的活动记录的性能,或者我是否应该删除它们(不是首选)。

1 个答案:

答案 0 :(得分:1)

通常没有。这就是索引的目的。您可能需要考虑此列的筛选索引:https://www.postgresql.org/docs/current/static/indexes-partial.html然后您的索引甚至根本没有索引“0”行。