【问题标题】:Greater than on multiple columns / lexicographic where with order大于多列/字典顺序的位置
【发布时间】:2019-07-08 08:36:28
【问题描述】:

我正在编写一个用于分页的查询,其中一个典型的页面将由如下查询返回:

SELECT col_a, col_b
WHERE (col_a = 'value_a' AND col_b > 'value_b') OR (col_a > 'value_a')
ORDER BY col_a, col_b
LIMIT 50

让我有点惊讶的是,没有一种更简洁的方法可以减少重复次数的 WHERE 子句。有吗?

【问题讨论】:

    标签: sql postgresql sorting pagination tuples


    【解决方案1】:

    是的:有一种不同/更清晰的方式。您可以比较“元组”(这可能不是正确的术语)

    WHERE (col_a, col_b) > ('value_a', 'value_b')
    

    我不知道这是否会影响索引使用的可能性。

    【讨论】:

    • 确实会影响索引的使用。按照您编写的方式,可以在索引扫描中使用多列索引并且不需要排序。它不能与原始查询一样有效地使用(仅用于位图索引扫描和以下排序)。
    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 2017-03-25
    • 2021-12-05
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多