2012-07-28 48 views
1

我有一個搜索表單,有很多搜索選項。我將如何索引所有這些列?可以用多列創建索引嗎?許多指標Posgresql

Rails的例子:

add_index :cars, [:brand, :fuel, :year_from, :year_to, :price_from, :price_to] and so on... 

是爲 「OK」,包括一大堆列在一個單一的指標?我使用

P.S最新的PostgreSQL的D.S

回答

2

這取決於你計劃如何查詢數據庫表。您是否打算運行一個查詢,該查詢將擁有該子句中的所有字段?

在查詢將包含子句中的所有字段的情況下,創建多列索引是正確的方式,但是如果要在where子句中過濾的字段只能是其中的一部分(例如有時僅限於品牌和燃料,以及其他時間只有year_from和year_to),並以不同的組合,你更好地創建一個索引的每個字段 ...

0

一個多列索引將是非常大的,可能過於龐大是任何用途。 PostgreSQL有一個很好的規劃器,它可能會使用索引的前幾列,然後掃描行而不是掃描剩餘的索引。這是假設索引的前幾列是作爲搜索條件給出的。

注意,documentation有這樣說的多列索引,

多列索引應謹慎使用。在大多數情況下,單列上的 索引就足夠了,可節省空間和時間。 除非 表的用法非常具有風格,否則具有三列以上的索引不太可能有用。

並使用單列索引。

當您很好地瞭解哪些條件最有可能被搜索時,您可能想要嘗試在將來添加一列或兩列索引。