PostgreSQL LIMIT子句
概述
LIMIT子句用于限制查询返回的行数。它通常与OFFSET配合使用实现分页功能。
基本语法
简单示例
LIMIT与ORDER BY
重要:使用LIMIT时通常需要配合ORDER BY,否则返回的行是不确定的。
OFFSET子句
OFFSET用于跳过指定数量的行,常用于分页。
语法
分页示例
FETCH子句(SQL标准写法)
PostgreSQL也支持SQL标准的FETCH语法:
FETCH语法变体
实际应用示例
获取Top N记录
API分页实现
配合子查询
LIMIT ALL
LIMIT ALL等同于不使用LIMIT:
注意事项
性能考虑
不确定性结果
NULL值排序
与其他子句的顺序
键集分页(Keyset Pagination)
对于大数据量,键集分页比OFFSET更高效:
键集分页优势
- 性能稳定,不随页数增加而变慢
- 避免了OFFSET大值的性能问题
- 适合实时数据和无限滚动场景