[英]Postgres Gin Index read performance
官方文檔指出:
與表達式索引相比,單獨列方法的一個優點是......另一個優點是搜索會更快,因為不需要重做 to_tsvector 調用來驗證索引匹配。
為什么 gin 表達式索引to_tsvector('english', body)
必須“驗證索引匹配”? 似乎每次更新/插入后索引都會自動更新,所有索引都有相同的更新問題,這可能不是要關注的問題。
我認為這涉及必要的“重新檢查”,因為 GIN 索引掃描可能有損:它將返回包含您搜索的tsvector
中所有元素的值。 所有這些行都被重新檢查以查看它們是否真的與tsquery
匹配。 這意味着針對索引掃描返回的所有行評估to_tsvector
function。
正如文檔所說,這對 GIST 比對 GIN 更重要。
如果 work_mem 太小而無法容納整個 bitmap,則仍需要重新檢查 GIN 索引,因此它們 go 有損。 如果模式使用相對的 position 指標(如<->
、 <2>
等),也需要重新檢查它們。
如果您有許多&
ed together 標記,它可能還需要重新檢查,它只是決定重新檢查它們中更常見的,而不是為它們煩惱所有位圖(我不確定這里是否真的這樣做——我'我從來沒有為@@
目睹過它,但沒有檢查整個代碼我不能排除這種可能性)或者如果你有復雜的 boolean tsquery 表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.