2011-04-20 38 views
6

我們有一個表格,其中有數百萬行的PostGIS幾何圖形。我們要執行的查詢是:最近的條目落在邊界幾何中的是什麼?這個查詢的問題是,我們通常會有大量與邊界框(半徑大約5公里)相匹配的項目,並且Postgres將不得不重新檢查邊界框內的所有返回項目以獲取他們的時間戳,然後排序並返回最新的N.我們需要的是一個兼顧GIST空間索引和時間戳的(複合?)索引。這樣的事情可能嗎?我在CREATE INDEX步驟中嘗試了幾種組合,到目前爲止沒有任何工作。空間+時間參數的Postgresql複合索引

+2

這個接受的答案適合你嗎?它看起來像時間戳上的第二個索引將無濟於事。 – jlmfao 2012-06-21 15:27:14

回答

0

我寧願在時間戳列上創建兩個索引,一個空間和第二個索引。 PostgreSQL可以將索引組合得非常好,並且不需要'重新檢查'找到的行。它可以使用索引來獲取幾何體中的行,並使用其他索引對它們進行排序。

+0

我怎麼能知道索引是否正確組合使用?我不相信這個答案。 – 2013-06-03 23:07:50

+1

使用說明(或解釋分析)來檢查查詢計劃。如果你能檢查它,你就不應該相信。 – 2013-06-04 12:26:29

+0

謝謝!如果運行良好,我會嘗試並投票。當我說「我不相信」時,如果我創建了分離索引,特別是與geoindex一起創建分離索引,MySQL不能正常工作。 – 2013-06-04 16:50:13