我試圖優化仿照下面的例子查詢:PostgreSQL的指數多列WHERE子句
UPDATE posts
SET title = "Example", lock_version = 1
WHERE (
posts.id = 123
AND
posts.lock_version = 0
)
我有posts.id
唯一索引,這確保了WHERE posts.id = 123
陽性命中永遠不會返回更多比一個結果。
我還需要索引posts.lock_version
嗎?
我想我會需要它,如果WHERE
的第一部分返回多個結果,因爲索引會縮短過濾器的速度。
但是我描述的情況如何呢?
如果posts.id是主鍵(或者是唯一的:候選鍵),那麼所有其他列在功能上依賴於它,並且不需要額外的索引,因爲您總是使用PK來尋址一行, – joop 2014-12-01 18:20:05