我有一張桌子,上面有一堆來自美國各縣的統計數據。創建幾個部分索引,只掃描一次(Postgresql)?
因爲它太大了,我想用一套全面的部分索引來索引它。
CREATE INDEX county_stats_34_idx on stats_county (stateid, countyid, site, yeargroup, foo, bar)
WHERE stateid = 1;
CREATE INDEX county_stats_25_idx on stats_county (stateid, countyid, site, yeargroup, foo, bar)
WHERE stateid = 2;
...
CREATE INDEX county_stats_32_idx on stats_county (stateid, countyid, site, yeargroup, foo, bar)
WHERE stateid = 53;
這將掃描表的每一行53次,檢查stateid並在適當的位置添加索引。我想知道 - 是否有更有效的方法來創建這些索引?從邏輯上講,它只需需要掃描一次表,一個53項開關...
只是好奇,因爲它似乎我需要做這種事情的頻率...
謝謝!
單個索引有什麼問題? – 2011-06-07 15:01:53
在這種情況下,它將是幾千兆字節,太大而無法加載到本機的內存中,因此查詢性能會很差。 – Stew 2011-06-08 14:20:21
據我所知,多個部分索引不會有太大區別。整個索引不需要在內存中使用;只有它的一部分。部分或沒有,經常使用的部分(如果有的話)將留在內存中。 – 2011-06-08 14:22:10