MySQL 中的 LIMIT 语句 LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率。 1. LIMIT 语法 1 2 3 4 5 SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件 ORDER BY 排序字段 LIMIT 记录数
MySQL 中的 LIMIT 语句LIMIT 语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率。 1. LIMIT 语法
或:
???? LIMIT 偏移量, 记录数 和 LIMIT 记录数 OFFSET 偏移量 作用相同。 2.LIMIT基本用法(1) 获取前 N 行数据
返回表 users 的前 5 行数据。 (2) LIMIT 结合 ORDER BY 如果不排序,返回的数据可能不稳定(顺序不确定)。
先按 age 降序排序,再取前 5 行数据。 (3) LIMIT 进行分页查询 如果要获取第 11 到 20 条记录:
或:
???? 等效于 LIMIT 10 OFFSET 10,其中:
???? 分页查询公式:
例如: 第 1 页(前 10 条):LIMIT 10 OFFSET 0第 2 页(第 11-20 条):LIMIT 10 OFFSET 10第 3 页(第 21-30 条):LIMIT 10 OFFSET 20 3. LIMIT 结合 COUNT()(1) 统计总记录数 分页时,通常要先获取总记录数:
???? COUNT(\*) 更快,不会忽略 NULL。 4. LIMIT 结合 RAND()(随机取数据)如果想要随机返回 3 条记录:
???? ? 注意: ORDER BY RAND() 性能较低,会对所有数据进行排序再取值。 更高效的随机查询(适用于 id 递增的数据表):
5. LIMIT 语句的性能优化(1) LIMIT OFFSET 可能导致性能下降 当 OFFSET 很大时:
MySQL 仍然会扫描 100000 行,然后丢弃前 100000 条数据,只返回 10 条,影响性能。 优化方法:用索引加条件替代 OFFSET
???? 适用于 id 是自增主键的情况,查询速度更快。 (2) LIMIT 结合 JOIN 可能引发性能问题
???? 如果 users.id 没有索引,查询会很慢。 优化方法:
先找到偏移的起点,再 LIMIT 取值,减少扫描行数。 6. LIMIT 结合 GROUP BY如果要获取每个城市的前 3 名用户:
???? ROW_NUMBER() 需要 MySQL 8.0+ 才支持。 7. LIMIT 结合 DISTINCT如果要获取唯一数据的前 5 条:
???? LIMIT 在 DISTINCT 之后生效,只返回 5 个唯一的 city。 8. LIMIT 语句总结
???? 重点总结 LIMIT 限制查询返回的行数,用于分页或取部分数据。 LIMIT 偏移量, 行数 等价于 LIMIT 行数 OFFSET 偏移量。 ORDER BY + LIMIT 确保数据顺序稳定。 ORDER BY RAND() 效率低,大数据表建议用更优化的随机查询。 大 OFFSET 查询效率低,建议用索引优化查询。 这样,你的 LIMIT 查询就会更快、更高效!???? |
2021-06-02
2021-06-05
2022-06-27
2024-07-31
2024-02-19