Limit语法:

复制代码 代码如下:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT接受一个或两个数字参数。参数必须是一个整数常量。

如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。

为了与 PostgreSQL 兼容,MySQL 也支持句法:LIMIT # OFFSET #。

eg:

复制代码 代码如下:

mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1

mysql> SELECT * FROM table LIMIT 95,-1; //检索记录行96-last

//如果只给定一个参数,它表示返回最大的记录行数目,换句话说,LIMIT n 等价于 LIMIT 0,n

mysql> SELECT * FROM table LIMIT 5; //检索前5个记录行

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

同样是取10条数据,下面两句就不是一个数量级别的。

复制代码 代码如下:

select * from table limit 10000,10

select * from table limit 0,10

文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。

这里我具体使用数据分两种情况进行测试。

1、offset比较小的时候:

复制代码 代码如下:

select * from table limit 10,10

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

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

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

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

2、offset大的时候:

复制代码 代码如下:

select * from table limit 10000,10

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

Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10

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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php mysql 查询 limit,mysql limit查询优化分析_PHP相关推荐

  1. MySQL查询执行的基础——查询优化处理

    查询的生命周期的下一步是将一个SQL转换成一个可执行计划,MySQL再按照这个计划和存储引擎进行交互 语法解析器和预处理 首先,MySQL通过关键词将SQL语句进行解析,并生成一颗对应的"解 ...

  2. mysql 查询分析器_mysql查询分析工具|mysql查询分析器(MySQL Query Browser)下载v1.1.20 官方版_ IT猫扑网...

    mysql查询分析器又名为mysqlquerybrowser,是一款可以帮助用户快捷进行sql语句查询的工具,让你在编程的过程中更加方便的进行工作.有需要的朋友就来IT猫扑下载吧! MySQL Que ...

  3. php mysql查询日期,​mysql查询日期的方法

    mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...

  4. mysql 查询rowno_C# Mysql 查询 Rownum的解决方法

    C# Mysql 查询 Rownum的解决方法,需要的朋友可以参考一下 Sql: 代码如下: SELECT @rownum:=@rownum+1 AS rownum, a.order_id , cas ...

  5. mysql查询更新优化_mysql查询优化(持续更新中)

    1.索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值为null,可以 ...

  6. php mysql 查询 where_PHP MySQL Where 子句

    PHP MySQL Where 子句 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句. WHERE 子句 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHER ...

  7. php+mysql+into_PHP+MySQL之InsertInto数据插入用法分析_php技巧

    本文实例讲述了PHP+MySQL之Insert Into数据插入用法.分享给大家供大家参考.具体如下: INSERT INTO 语句用于向数据库表中插入新纪录. 向数据库表插入数据 INSERT IN ...

  8. MySQL 查询分析

    一个低效查询引发的思考 上次在做银行对账,上传对账单后,出现对账超时的情况.查看日志发现,最后一条日志记录停在了对 c2c_zwdb.t_file_count 的查询 sql 上.使用 show pr ...

  9. smarty mysql_Smarty处理mysql查询数组

    Smarty处理mysql查询数组 MySQL的查询结果一般是一个数组,而不是所有结果集.因此我们需要将结果全部存到数组中进行处理,然后就可以很轻松的再Smarty中使用了. PHP Mysql 代码 ...

最新文章

  1. 如何通过 Vue+Webpack 来做通用的前端组件化架构设计
  2. csv数据去重 python_python批量查询、汉字去重处理CSV文件
  3. 第五章:系统困境之 你的努力忽略了关键限制因素
  4. 冲压模板自动标注LISP_干货满满!超实用冲压模具资料,加薪必看!
  5. linux-tomcat-install
  6. 使用openvswitch网桥连接不同的network namespace
  7. linux的tomcat如何开机自启,linux tomcat开机自启
  8. sqlite3 判断数据库和表的状态
  9. Lighttpd 启用 HTTPS 并重定向 HTTP 为 HTTPS 访问配置
  10. node基础---02DIRT程序
  11. 优盘扩容修复 u盘工具
  12. 解决笔记本同时连接局域网和外网网络后上网很卡的问题
  13. P1359 租用游艇【Floyd】
  14. vscode配置本地使用赛码网的输入输出格式编写代码
  15. model.evaluate与model.predict的不同
  16. 我们自己的操作系统第二弹: Ubuntu Kylin(优麒麟)安装教程
  17. LiveRTMP内置IPCamera实现RTMP直播摄像机功能
  18. 弹出窗口与选择器(二)
  19. 竞品分析和产品分析,你究竟搞清楚了么?
  20. Python绘制多条曲线

热门文章

  1. STM32 HAL库窗口看门狗
  2. 【无限互联】学员作品:优顾理财ios客户端
  3. 互联网及移动互联网五大趋势及未来创业蓝海
  4. Java中int和long数据类型转换及溢出问题
  5. 软件架构实践(第四版)
  6. 辐射3游戏登录是提示计算机丢失xlive.dll文件,玩辐射3提示丢失xlive.dll怎么办 辐射3丢失xlive.dll的解决方法...
  7. Spring实战(第4版)第2章 装配Bean
  8. 一招教你轻松从图像中裁剪出婚纱礼服和面纱
  9. valgrind简介与使用
  10. Linux下C语言判断文件是否存在