[英]PostgreSQL index in multi-column WHERE clause
我正在嘗試優化以下示例建模的查詢:
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
是唯一的,那么您不需要超過該列上的簡單索引。
它不會更快 - 相反:由於您更新了行,因此您還需要添加維護成本來更新其他索引。
除此之外:您不需要WHERE
子句中的括號:
...
WHERE id = 123
AND lock_version = 0
如果你雙引號"Example"
它引用該名稱的列。 您可能想要值: 'Example'
。 字符串文字的單引號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.