Postgresql

在數百萬行中查找(罕見)具有空值的行的最快方法?

  • January 8, 2016

如果我在 Postgres 數據庫中有一個包含約 400 萬行的地址表。有沒有辦法優化以下查詢,以便我可以找到address_idNULL 的幾行?有時我需要編寫這些查詢來評估數據庫的狀態。我對優化 SQL 很陌生,我習慣於使用更小的數據庫。

SELECT address_id FROM addresses WHERE address_id IS NULL;

有一個非常快速的方法,創建一個部分索引

CREATE INDEX foo_idx ON addresses (address_id)  -- arbitrary pick
WHERE address_id IS NULL; 

索引列在很大程度上無關緊要。使用可能與您的查詢相關的任何小列。重要的一點是只有少數幾行address_id IS NULL最終在索引中。

顯然,索引會在寫入性能上產生(非常小的)成本。

有關的:

引用自:https://dba.stackexchange.com/questions/124391