当前位置:  数据库>mysql

详解mysql的limit经典用法及优化实例

    来源: 互联网  发布时间:2014-10-12

    本文导语:  用法一  代码如下: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='5...

用法一
 
代码如下:

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。这里我具体使用数据分两种情况进行测试。(测试环境win2033+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

) limit 10

多次运行,时间保持在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

) limit 10

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

以后要注意改正自己的limit语句,优化一下mysql了

    
 
 

您可能感兴趣的文章:

  • linux c malloc函数定义及用法详解
  • oracle中lpad函数的用法详解
  • HTML 5 <acronym> 标签定义用法详解
  • 请教sed awk的用法详解,有命令说明的链接也不错,谢谢了
  • c++断言assert()函数的头文件及其用法详解
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • HTML 5中<address> 标签定义用法详解及几个示例
  • ThinkPHP模板判断输出Present标签用法详解
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • ThinkPHP模板判断输出Empty标签用法详解
  • HTML <!DOCTYPE> 标签用法详解及如何解决<!DOCTYPE html>未声明时导致页面无效的问题
  • group by,having,order by的用法详解
  • HTML <a> 标签用法详解
  • ThinkPHP模板判断输出Defined标签用法详解
  • mysql update语句的用法详解
  • java equals函数用法详解
  • malloc函数详解及用法举例
  • static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解
  • php session 原理详解,用法介绍以及如何设置过期时间
  • ThinkPHP模板IF标签用法详解
  • ThinkPHP模板范围判断输出In标签与Range标签用法详解
  • ThinkPHP之N方法实例详解
  • Python文件操作类操作实例详解
  • Java加载JDBC驱动程序实例详解
  • ThinkPHP3.1之D方法实例详解
  • Android对sdcard扩展卡文件操作实例详解
  • 基于c# 接口的实例详解
  • php实例分享之通过递归实现删除目录下的所有文件详解
  • php 获取完整url地址实例详解
  • IP地址数字互转 iis7站长之家
  • php事务处理实例详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html保留字符详解
  • 关于tcp/ip详解卷2中的代码
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 请问哪儿有java2编程详解的电子书下载??本人急需!!跟贴有分!!!
  • TCP协议报头字段详解及报头图
  • 哪有LINUX命令详解下??
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 请问:setTimeout(p1,p2) 的函数详解,马上给分的。
  • TCP协议三次握手过程详解
  • 求 sun ldoms 配置 虚拟化服务器 步骤详解
  • html5/css3文本阴影(text-shadow)详解及示例
  • 请问:哪里可以下tcp/ip详解书上程序的源码
  • linux下进程占用内存空间详解
  • linux 2.4 内核软中断详解?
  • Base64编码原理详解及c++编码解码实现
  • 哪本书介绍mutex、POSIX 线程详解
  • Linux下NFS服务配置详解
  • 哪位java同门师兄有《java2编程详解》电子文档,注意不是影印版
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • SSL握手通信详解及linux下c/c++ SSL Socket代码举例
  • 大家推荐几本详解Linux或unix 操作系统源代码的书籍!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3