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
投稿

猜你喜欢

  • python中的内置函数getattr()介绍及示例

    2023-01-15 19:16:46
  • python如何通过psutil获取服务器cpu、内存、磁盘使用率

    2022-11-07 01:01:29
  • Python如何实现动态数组

    2022-11-24 04:44:02
  • 用Python实现简单的人脸识别功能步骤详解

    2022-05-15 15:52:00
  • Python实现迪杰斯特拉算法过程解析

    2022-08-14 09:55:42
  • python 如何停止一个死循环的线程

    2021-04-17 04:25:34
  • MYSQL数据库Innodb 引擎mvcc锁实现原理

    2024-01-21 08:47:42
  • Python使用爬虫爬取贵阳房价的方法详解

    2022-12-01 09:55:25
  • Go语言集成开发环境IDE详细安装教程

    2024-04-25 15:26:12
  • python paramiko连接ssh实现命令

    2022-03-29 02:29:22
  • 浅谈python正则的常用方法 覆盖范围70%以上

    2022-05-18 21:01:13
  • 微信小程序实现人脸识别对比

    2024-04-29 13:22:13
  • 简单有效上手Python3异步asyncio问题

    2022-01-14 02:28:34
  • 记一次因线上mysql优化器误判引起慢查询事件

    2024-01-26 18:14:41
  • Python环境配置实现pip加速过程解析

    2022-09-23 12:42:37
  • Pycharm安装第三方库的超详细步骤

    2023-06-08 14:35:07
  • python字典操作实例详解

    2021-05-21 08:22:24
  • Go语言实现socket实例

    2024-02-04 20:17:30
  • python中itertools模块zip_longest函数详解

    2023-01-02 09:09:35
  • JavaScript模板解析演示实例

    2009-10-19 23:16:00
  • asp之家 网络编程 m.aspxhome.com