【发布时间】:2022-01-08 06:37:01
【问题描述】:
我正在使用这种技术对 sql server 进行分页,并且效果很好。 mysql怎么办
这是我的 sql 代码
OFFSET 1 ROWS FETCH NEXT 20 ROWS ONLY
但是mysql呢?
【问题讨论】:
标签: mysql sql pagination
我正在使用这种技术对 sql server 进行分页,并且效果很好。 mysql怎么办
这是我的 sql 代码
OFFSET 1 ROWS FETCH NEXT 20 ROWS ONLY
但是mysql呢?
【问题讨论】:
标签: mysql sql pagination
MySQL Data - Best way to implement paging? 之类的答案会告诉您这是查询的一般形式:
SELECT ...
ORDER BY <expr>
LIMIT <count> OFFSET <skip>;
但请注意,MySQL 确实会检查 所有行,直到 <skip> + <count>。因此,随着您在分页数据集中前进,它的成本就越高。
更好的策略是使用主键:
SELECT ...
WHERE id > ?
ORDER BY id
LIMIT <count>;
这仅检查<count> 行,从查询参数中指定值之后的第一行开始。当您对大型结果集进行分页时,这对于可伸缩性来说要好得多,但是您当然需要知道要搜索的正确 id 值。
如果您在查看页面N之后查看页面N+1,那么您的优势是您可以从查看页面N的结果中获取最大id值,并将其用作页面的起点N+1.
【讨论】: