需要有關PostgreSQL中查詢性能的幫助。這似乎與指數有關。PostgreSQL中的索引查詢性能不穩定
這個查詢:根據timestamp
type
- 過濾器:
SELECT * FROM the_table WHERE type = 'some_type' ORDER BY timestamp LIMIT 20
的指標:
CREATE INDEX the_table_timestamp_index ON the_table(timestamp);
CREATE INDEX the_table_type_index ON the_table(type);
type
字段的值只是大約11個不同字符串中的一個。
問題是查詢似乎在O(log n)時間內執行,除了一些值爲type
的運行幾分鐘的時間外,最多隻需要幾毫秒。
在這些示例查詢,第一隻需要幾毫秒的時間來運行,而第二個需要30分鐘:
SELECT * FROM the_table WHERE type = 'goq' ORDER BY timestamp LIMIT 20
SELECT * FROM the_table WHERE type = 'csp' ORDER BY timestamp LIMIT 20
我猜想,大約有90%的把握,我們有索引不正確的。我想在閱讀this similar question about index performance之後,我們最需要的是一個綜合指數,超過type
和timestamp
。
查詢計劃,我已經運行在這裏:
- Expected performance, type-specific index (i.e. new index with the type = 'csq' in the
WHERE
clause)。 - Slowest, problematic case, indexes as described above.
- Fast case, same indexes as above.
非常感謝您的幫助!任何指針將非常感激!
索引的大小是多少?數據集的大小? – Gothmog