mysql的limit经典用法及优化

如题所述

第1个回答  2022-10-30

  用法一

  SELECT `keyword_rank` * FROM `keyword_rank` WHERE (advertiserid= ) LIMIT OFFSET ;

  比如这个SQL limit后面跟的是 条数据 offset后面是从第 条开始读取

  用法二

  SELECT `keyword_rank` * FROM `keyword_rank` WHERE (advertiserid= ) LIMIT ;

  而这个SQL limit后面是从第 条开始读 读取 条信息

  这两个千万别搞混哦

  用法三

  select * from tablename <条件语句> limit

  从第 条后开始 最后一条的记录

  用法四

  select * from tablename <条件语句> limit

  相当于limit    查询结果取前 条数据用法五

  mysql低版本不支持limit offset

  limit offset 在mysql 以上的版本中都可以正常运行 在旧版本的mysql 中无效

  limit m offset n 等价于 limit m n

  limit 的优化

  mysql的limit给分页带来了极大的方便 但数据量一大的时候 limit的性能就急剧下降

  MYSQL的优化是非常重要的 其他最常用也最需要优化的就是limit mysql的limit给分页带来了极大的方便 但数据量一大的时候 limit的性能就急剧下降

  同样是取 条数据

  select * from yanxue _visit limit 和

  select * from yanxue _visit limit

  就不是一个数量级别的

  网上也很多关于limit的五条优化准则 都是翻译自mysql手册 虽然正确但不实用 今天发现一篇文章写了些关于limit优化的 很不错

  文中不是直接使用limit 而是首先获取到offset的id然后直接使用limit size来获取数据 根据他的数据 明显要好于直接使用limit 这里我具体使用数据分两种情况进行测试 (测试环境win +p 双核 ( GHZ) + G内存 mysql )

   offset比较小的时候

  select * from yanxue _visit limit

  多次运行 时间保持在 之间

  Select * From yanxue _visit Where vid >=(

  Select vid From yanxue _visit Order By vid limit

  ) limit

  多次运行 时间保持在 之间 主要是

  结论 偏移offset较小的时候 直接使用limit较优 这个显然是子查询的原因

   offset大的时候

  select * from yanxue _visit limit

  多次运行 时间保持在 左右

  Select * From yanxue _visit Where vid >=(

  Select vid From yanxue _visit Order By vid limit

  ) limit

  多次运行 时间保持在 左右 只有前者的 / 可以预计offset越大 后者越优

lishixinzhi/Article/program/MySQL/201311/29501

相似回答
大家正在搜