Postgresql
在數百萬行中查找(罕見)具有空值的行的最快方法?
如果我在 Postgres 數據庫中有一個包含約 400 萬行的地址表。有沒有辦法優化以下查詢,以便我可以找到
address_id
NULL 的幾行?有時我需要編寫這些查詢來評估數據庫的狀態。我對優化 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
最終在索引中。顯然,索引會在寫入性能上產生(非常小的)成本。
有關的: