常规用法:

用法一:

SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;

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

用法二:

SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2,1;

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

用法三:

select * from tablename limit 100,-1

从第100条后开始-最后一条的记录。

用法四:

select * from tablename limit 15

相当于limit 0,15,查询结果取前15条数据

用法五:

MySQL低版本不支持limit offset

limit offset在MySQL 4.0以上的版本中都可以正常运行,在旧版本的MySQL 3.23中无效

limit m offset n等价于limit m,n

limit的优化:

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

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

同样是取10条数据

select * from yanxue8_visit limit 10000,10

select * from yanxue8_visit limit 0,10

就不是一个数量级别的。

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

文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。

(测试环境CentOS 6+P4双核(3GHZ)+4G内存 MySQL 5.0.19)

1、offset比较小的时候。

select * from yanxue8_visit limit 10,10

多次运行,时间保持在0.0004-0.0005之间

Select * From yanxue8_visit Where vid >=(Select vid From yanxue8_visit Order By vid limit 10,1) limit10

多次运行,时间保持在0.0005-0.0006之间,主要是0.0006

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

2、offset大的时候。

select * from yanxue8_visit limit 10000,10

多次运行,时间保持在0.0187左右

Select * From yanxue8_visit Where vid >=(Select vid From yanxue8_visit Order By vid limit 10000,1) limit10

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

参考:

mysql limit 算法_MySQL的limit用法及优化(转)相关推荐

  1. mysql limit 算法_MySQL的Limit详解

    问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Server数据库中语法为: S ...

  2. mysql limit锁_mysql中limit的用法

    语法: SELECT * FROM 表名 limit m,n; SELECT * FROM table LIMIT [offset,] rows; 注释: Limit子句可以被用于强制 SELECT  ...

  3. mysql使用方法_Mysql的常用用法

    一.mysql中limit的用法详解[数据分页常用] 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT  ...

  4. mysql 分页算法_MySQL高效的分页算法

    PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇"Efficient Pagination Using MySQL"的报告, ...

  5. explain mysql怎么用_mysql中explain用法详解

    EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...

  6. java mysql 分页查询_MySQL分页查询方法及优化

    当数据库的数据量很大时,一次性查询结果就会变得很慢,为了提高查询效率,我们可以使用MySQL的分页查询功能.本文就为大家带来MySQL分页查询方法及优化. 推荐阅读: 分页查询方法: 在MySQL中, ...

  7. mysql limit括号_MYSQL中LIMIT使用简介

    LIMIT是MySQL内置语法,其作用是用于限制查询结果的条数. 1)其语法格式如下: LIMIT[位置偏移量,]行数 其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开 ...

  8. mysql select 使用_mysql select简单用法

    mysql select简单用法 1.select语句可以用回车分隔 $sql=select * from article where id=1 和 $sql=select * from articl ...

  9. php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询

    这是原始数据,并希望根据得分(count(tbl_1.id))对它们进行排名. [tbl_1] =========== id | name =========== 1 | peter 2 | jane ...

最新文章

  1. 按下电源后的几秒钟,CPU在干嘛?
  2. why is pc important for university students?
  3. php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
  4. 搜索Maven依赖资源_搜索Maven工件_搜索Maven构件_搜索依赖_搜索构件_搜索工件
  5. REVERSE-PRACTICE-BUUCTF-6
  6. mysql 跨实例复制数据_社区投稿 | MySQL 跨实例 copy 大表解决方案
  7. 开启docker中MongoDB的认证授权
  8. Redis的内存回收机制和数据过期淘汰策略
  9. ES查询-基本查询续
  10. 地图结合资料 提供全新网络服务
  11. jQuery1.3以上版本@的问题
  12. 从 阿西莫夫机器人三大定律 谈起
  13. UVAlive3662 Another Minimum Spanning Tree 莫队算法
  14. 一、Java入门基础
  15. 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
  16. 文档服务器设置密码,服务器密码设置要求
  17. Unity Animator Animation详解及应用实例教程
  18. 微信推出网页版传输助手,真的好用吗?
  19. PDA模拟中的问题1
  20. 计算机网络设备调试员报名,工信部网络设备调试员一级高级技师、二级技师

热门文章

  1. Android webview执行JS方法
  2. 技术管理者应有的 4 种基本思维模式
  3. Logback -- 使用
  4. roaming文件夹是什么文件夹,roaming文件夹能删除么?
  5. ubuntu官方国内源
  6. 整理记录一些好用的随机图API
  7. Mysql的字符集编码选择
  8. Vijos 1773题:质因数
  9. 哈工大 计算机系统 大作业
  10. 数值分析C++实现用四阶龙格-库塔(Runge-Kutta)方法求解常微分方程初值问题