使用ROW值进行比较:
SELECt *FROM table1WHERe (a,b,c) >= (10, 20, 30)ORDER BY a,b,cLIMIT 10;
(
>=尽管您的描述显示了建议,但仍可使用它来匹配您的代码
>。两种方法都可以。)
(a,b,c)是的缩写
ROW(a,b,c),真的。
是的,Postgres知道可以为此使用匹配的多列B树索引(与其他RDBMS不同-或我听说过)。
“匹配” 意味着所有索引表达式,它们的序列和关联的顺序(
ASC|
DESC)都是相同的-
或整个索引行的排序顺序完全相反,因此Postgres可以以几乎相同的速度向后扫描索引。
对于给定的示例,这些索引匹配:
(a ASC, b ASC, c ASC)(a DESC, b DESC, c DESC)
但是这些 不是 :
(a ASC, b DESC, c ASC)(a ASC, c ASC, b ASC)
在一系列时间戳上优化查询(两列)



