說我有20萬行我想索引像這樣的表:如果我的索引是部分索引,它在性能/索引大小方面會有明顯不同嗎?
CREATE INDEX fruit_color
ON fruits
USING btree
(color);
現在,讓我們說,只有2%的水果有顏色,其餘的將是NULL
。我的查詢將NEVER希望找到顏色NULL
(無顏色)水果,所以問題是,它讓PostgreSQL的一個區別,如果我改變指數:
CREATE INDEX fruit_color
ON fruits
USING btree
(color)
WHERE color IS NOT NULL;
我不知道多少關於postgresql處理索引的內部方式,所以這就是我問的原因。
PS postgresql版本是9.2
我的猜測是,索引的性能不會有太大的變化,因爲在這兩種情況下,顏色的BTree部分看起來都很相似。索引的大小可能不同。你有沒有試過用'EXPLAIN'實際使用兩個索引? –