【PostgreSQL】数据查询-LIMIT AND OFFSET

发布时间:2024年01月14日

PostgreSQL数据查询-LIMIT AND OFFSET

PostgreSQL中LIMIT并允许您仅检索由查询的其余部分生成的部分行:OFFSET

SELECT select_list
    FROM table_expression
    [ ORDER BY ... ]
    [ LIMIT { number | ALL } ] [ OFFSET number ]

如果给出了限制计数,则返回的行数不会超过该数(但如果查询本身生成的行数较少,则返回的行数可能会更少)。 LIMIT与省略子句相同,ALL LIMIT与 NULL 参数相同。

OFFSET说在开始返回行之前跳过那么多行。 OFFSET 与省略子句相同,0 OFFSET与 NULL 参数相同。

如果两者都出现,则在开始计算返回的行之前跳过行。

使用 LIMIT时,务必使用将结果行约束为唯一顺序的子句。否则,你将获得查询行的不可预知子集。你可能会问第十行到第二十行,但第十行到第二十行的顺序是什么?顺序未知,除非您指定了 .

查询优化器在生成查询计划时会考虑在内,因此您很可能会获得不同的计划(产生不同的行顺序),具体取决于您为 LIMIT和LIMIT OFFSET 提供的内容。因此,使用不同的LIMIT OFFSET / ORDER BY值来选择查询结果的不同子集将产生不一致的结果,除非使用ORDER BY强制执行可预测的结果排序。这不是一个错误;这是 SQL 不承诺以任何特定顺序传递查询结果这一事实的固有结果,除非用于约束顺序。

子句跳过的行仍然必须在服务器内部计算;因此,大可能效率低下。

文章来源:https://blog.csdn.net/sinat_36528886/article/details/135560256
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。