我对Postgres感兴趣,但我想答案可能是普遍相同的。my_table order by foo, bar for update在解释计划中有一个不同的地方(见下面),但是如果它真的改变了锁顺序,这对我来说并不明显,这正是我真正感兴趣的。我正在与一些不必要的死锁作斗争,而我注意到的一件事是,两种不同的排序规则之间的使用不一致。也许这就是原因?
问题所在
使用PostgreSQL 13,我遇到了一个性能问题,根据执行的select语句,从连接两个表的视图中选择最高的id。我正在执行两个语句,这将导致完全不同的执行计划和运行时。下面的语句在小于100 in的时间内执行。就我所理解的执行计划而言,运行时独立于行计数,因为Postgres逐个迭代行(从最高id开始,使用索引),直到行上的联接成为可能并立即返回为止。SELECT id FROM t