mysql limit查询优化分析

时间:2023-11-16 00:51:04 

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越大,后者越优。

标签:mysql,limit,查询优化
0
投稿

猜你喜欢

  • Dreamweaver4探谜系列(1)

    2010-09-05 21:12:00
  • Firefox 下 innerHTML 的一个 BUG

    2008-08-05 18:19:00
  • CSS样式和JavaScript脚本是否放置于外部文件的探讨

    2008-08-08 12:39:00
  • JSP分页显示的实例代码

    2023-06-26 06:06:37
  • ie7.0浏览器 兼容问题苦煞网站设计者

    2007-08-08 17:11:00
  • Asp 操作Access数据库时出现死锁.ldb的解决方法

    2011-03-29 10:49:00
  • gem install mysql报错checking for mysql_qu

    2010-11-11 12:13:00
  • XML十项特点

    2008-04-05 13:49:00
  • 使用python制作游戏下载进度条的代码(程序说明见注释)

    2023-06-15 00:39:52
  • Tab(选项卡)的产品设计原则及应用[译]

    2009-07-09 19:05:00
  • 浅析python标准库中的glob

    2023-08-04 02:39:10
  • Oracle SQL性能优化系列学习三

    2010-07-23 13:08:00
  • ASP中Global.asa使用方法说明

    2007-11-03 13:18:00
  • YUI Grids CSS 解读

    2008-05-28 12:49:00
  • 重命名SQLServer数据库的方法

    2012-07-11 15:39:37
  • 编写和优化SQL Server的存储过程

    2009-04-13 10:13:00
  • 检测SQL Server是否有特洛伊木马

    2009-02-24 15:19:00
  • 浅析ASP内置组件

    2007-10-18 11:31:00
  • 几款优秀的中文字体设计

    2008-03-24 17:25:00
  • 我的ImageMagick使用心得

    2008-10-21 11:05:00
  • asp之家 网络编程 m.aspxhome.com