簡體   English   中英

多列WHERE子句中的PostgreSQL索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM