• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    MySQL 中的 LIMIT 语句及基本用法

    发布者: 浪子 | 发布时间: 2025-6-14 14:25| 查看数: 156| 评论数: 0|帖子模式

    MySQL 中的 LIMIT 语句
    1. LIMIT
    复制代码
    语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率。

    1. LIMIT 语法
    1. SELECT 列名1, 列名2, ...
    2. FROM 表名
    3. WHERE 条件
    4. ORDER BY 排序字段
    5. LIMIT 记录数 OFFSET 偏移量;
    复制代码
    或:
    1. SELECT 列名1, 列名2, ...
    2. FROM 表名
    3. WHERE 条件
    4. ORDER BY 排序字段
    5. LIMIT 偏移量, 记录数;
    复制代码
    📌
    1. LIMIT 偏移量, 记录数
    复制代码
    1. LIMIT 记录数 OFFSET 偏移量
    复制代码
    作用相同。

    2. LIMIT 基本用法


    (1) 获取前 N 行数据
    1. SELECT * FROM users LIMIT 5;
    复制代码
    返回表
    1. users
    复制代码
    的前 5 行数据

    (2) LIMIT 结合 ORDER BY

    如果不排序,返回的数据可能不稳定(顺序不确定)。
    1. SELECT * FROM users ORDER BY age DESC LIMIT 5;
    复制代码
    先按
    1. age
    复制代码
    降序排序,再取前 5 行数据。

    (3) LIMIT 进行分页查询

    如果要获取第 11 到 20 条记录
    1. SELECT * FROM users ORDER BY id ASC LIMIT 10 OFFSET 10;
    复制代码
    或:
    1. SELECT * FROM users ORDER BY id ASC LIMIT 10, 10;
    复制代码
    📌 等效于
    1. LIMIT 10 OFFSET 10
    复制代码
    ,其中:

      1. 10
      复制代码
      偏移量(OFFSET),表示跳过前 10 条数据。
      1. 10
      复制代码
      返回的行数(LIMIT)
    📌 分页查询公式
    1. LIMIT 每页条数 OFFSET (当前页 - 1) * 每页条数;
    复制代码
    例如:

    • 第 1 页(前 10 条):
      1. LIMIT 10 OFFSET 0
      复制代码
    • 第 2 页(第 11-20 条):
      1. LIMIT 10 OFFSET 10
      复制代码
    • 第 3 页(第 21-30 条):
      1. LIMIT 10 OFFSET 20
      复制代码

    3. LIMIT 结合 COUNT()


    (1) 统计总记录数

    分页时,通常要先获取总记录数:
    1. SELECT COUNT(*) FROM users;
    复制代码
    📌
    1. COUNT(\*)
    复制代码
    更快,不会忽略
    1. NULL
    复制代码


    4. LIMIT 结合 RAND()(随机取数据)

    如果想要随机返回 3 条记录
    1. SELECT * FROM users ORDER BY RAND() LIMIT 3;
    复制代码
    📌 ⚠ 注意
    1. ORDER BY RAND()
    复制代码
    性能较低,会对所有数据进行排序再取值。
    更高效的随机查询(适用于
    1. id
    复制代码
    递增的数据表):
    1. SELECT * FROM users WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM users))) LIMIT 3;
    复制代码
    5. LIMIT 语句的性能优化


    (1) LIMIT OFFSET 可能导致性能下降

    1. OFFSET
    复制代码
    很大时:
    1. SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 100000;
    复制代码
    MySQL 仍然会扫描 100000 行,然后丢弃前 100000 条数据,只返回 10 条,影响性能
    优化方法:用索引加条件替代
    1. OFFSET
    复制代码
    1. SELECT * FROM users WHERE id > 100000 ORDER BY id LIMIT 10;
    复制代码
    📌 适用于
    1. id
    复制代码
    是自增主键的情况,查询速度更快。

    (2) LIMIT 结合 JOIN 可能引发性能问题
    1. SELECT * FROM users JOIN orders ON users.id = orders.user_id ORDER BY users.id LIMIT 100000, 10;
    复制代码
    📌 如果
    1. users.id
    复制代码
    没有索引,查询会很慢
    优化方法
    1. SELECT users.* FROM users WHERE users.id > (SELECT id FROM users ORDER BY id LIMIT 100000, 1) ORDER BY users.id LIMIT 10;
    复制代码
    找到偏移的起点,再
    1. LIMIT
    复制代码
    取值,减少扫描行数

    6. LIMIT 结合 GROUP BY

    如果要获取每个城市的前 3 名用户
    1. SELECT * FROM (    SELECT *, ROW_NUMBER() OVER (PARTITION BY city ORDER BY age DESC) AS rank    FROM users) AS temp WHERE rank <= 3;
    复制代码
    📌
    1. ROW_NUMBER()
    复制代码
    需要 MySQL 8.0+ 才支持。

    7. LIMIT 结合 DISTINCT

    如果要获取唯一数据的前 5 条
    1. SELECT DISTINCT city FROM users LIMIT 5;
    复制代码
    📌
    1. LIMIT
    复制代码
    1. DISTINCT
    复制代码
    之后生效,只返回 5 个唯一的
    1. city
    复制代码


    8. LIMIT 语句总结

    用法语法示例说明获取前 N 行
    1. LIMIT 5
    复制代码
    取前 5 条数据分页查询
    1. LIMIT 10 OFFSET 10
    复制代码
    取第 11-20 条数据随机取 N 条
    1. ORDER BY RAND() LIMIT 3
    复制代码
    随机返回 3 条数据统计总数
    1. SELECT COUNT(*) FROM users;
    复制代码
    获取总记录数优化大偏移
    1. WHERE id > (SELECT id FROM users LIMIT 100000, 1) LIMIT 10;
    复制代码
    避免
    1. OFFSET
    复制代码
    性能问题
    🔥 重点总结


      1. LIMIT
      复制代码
      限制查询返回的行数,用于分页或取部分数据。
      1. LIMIT 偏移量, 行数
      复制代码
      等价于
      1. LIMIT 行数 OFFSET 偏移量
      复制代码

      1. ORDER BY
      复制代码
      +
      1. LIMIT
      复制代码
      确保数据顺序稳定。
      1. ORDER BY RAND()
      复制代码
      效率低,大数据表建议用更优化的随机查询。
      1. OFFSET
      复制代码
      查询效率低,建议用索引优化查询。
    这样,你的
    1. LIMIT
    复制代码
    查询就会更快、更高效!🚀
    到此这篇关于MySQL 中的 LIMIT 语句及基本用法的文章就介绍到这了,更多相关MySQL LIMIT 语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/339734pzy.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表