我有这两个索引:
CREATE INDEX "idx1" ON "posts"("category", "feed", "create_time" DESC);
CREATE INDEX "idx2" ON "posts"("feed", "create_time" DESC);
我执行了这个更新函数:
UPDATE "posts"
SET "attribute" = 'something' AND "feed" = function("attribute")
WHERE "id" = '123';
function("attribute")
计算提要基于属性列,并且大多数时候feed不会改变。这是否意味着索引idx1和idx2当提要更新为相同的值时,不会进行重构,从而使更新非常快吗?
即使我没有任何更新问题或缓慢的延迟,这可能是明智的提前考虑。
如果更新是退化的,那么它可以符合仅堆元组更新的条件,在这种情况下不需要维护索引。但是要应用这一点,在同一页面中需要有足够的空闲空间来容纳元组的新副本。