如何在mysql中使用ORDER BY和LIMIT分页

分页是根据ORDER BY和LIMIT完成的。
核心是稳定排序和使用偏移量来控制范围。

基本用法非常简单: SELECT FROM 表名 ORDER BY 字段名 ASC/DESC LIMIT 偏移量、数量。

例如每页 1 0 项: 第一页:LIMIT 0.1 0 或 LIMIT 1 0 第二页:LIMIT 1 0,1 0 第三页:LIMIT 2 0,1 0
第二页按创建时间倒序排列: SELECT id,name,created_time FROM users ORDER BYcreated_time DESC LIMIT 1 0,1 0
优化方法: 1 、排序字段必须有索引。
如果没有索引,就会扫描整个表,速度非常慢。
直接添加索引: ALTER TABLE 用户添加索引 idx_created_time(created_time);
2 .不要使用大的偏移量。
例如,如果LIMIT 1 00000.1 0,MySQL必须扫描1 00,000行,这非常慢。
切换到光标搜索,记住上一页最后一条记录的排序值,然后从它开始搜索下一页: SELECT id,name,created_time FROM users WHEREcreated_time<'2 02 3 -01 -01 1 0:00:00' ORDER BYcreated_time DESC LIMIT 1 0;
其他提示:
有了综合索引,所有搜索字段都在索引中,不需要返回表。

不要使用SELECT,只检查必填字段以节省流量。

注意:
如果排序字段有重复值,请添加辅助排序字段以确保顺序。

LIMIT参数的顺序不能颠倒。
offset 可以省略,但 count 不能省略。

数据量太大,分表分库,或者使用Elasticsearch。

对于少量数据,请使用 ORDER BY+LIMIT。
对于大量数据,请使用光标搜索或特殊工具。

有十条数据我想分两页查第一页1-5 第二页是5-10 怎么写mysql 语句

这是一个陷阱,不要这样做。

直接使用: SQL 从表格中选择 LIMIT Page Size OFFSET (Page
1 ) Page Size;
实用提醒:使用标准的 OFFSET 和 LIMIT 语法。