博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL limit 分页查询数据库
阅读量:4982 次
发布时间:2019-06-12

本文共 1478 字,大约阅读时间需要 4 分钟。

- 在查询数据库的时候,由于要查询很大的数据,上百万的级别,往往让出现内存溢出的问题,所以这时候需要分批去取数据库表中的全部数据来进行处理,最简单的方法就是使用分页查询语句:MySQL的LIMIT语句是满足这个要求的。 

- 先来了解这个用法和原理:mysql LIMIT 子句用法及原理。 
- 使用查询语句的时候,经常要返回前几条或者中间某几行数据, LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。

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

这是两个参数,第一个是偏移量,第二个是数目

select * from table limit 2, 7; // 返回3-9行,偏移7个select * from table limit 3,1; // 返回第4行
  • 1
  • 2
  • 1
  • 2

一个参数

select * from table limit 3; // 返回前3行,默认是0开始。
  • 1
  • 1
  • 效率: 
    mysql中分页都是用的 limit 10000,20这样的方式,这样的下驴是很低的。因为要先扫描1W多行才剔除前面的1W行,返回后面的结果。

第一部分:看一下分页的基本原理: 

mysql explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20 
******* 1. row **** 
id: 1 
select_type: SIMPLE 
table: message 
type: index 
possible_keys: NULL 
key: PRIMARY 
key_len: 4 
ref: NULL 
rows: 10020 
Extra: 
1 row in set (0.00 sec) 
*******end******** 
  对上面的mysql语句说明:limit 10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,每次查询需要扫描超过1W行,性能肯定大打折扣。 
  增加where语句,缩小范围: 
   
  如果LIMIT m,n不可避免的话,要优化效率,只有尽可能的让偏移量m小一下 
  

SELECT * FROM table WHERE id >=2500 ORDER BY auto_id asc LIMIT 0,20
  • 1
  • 1

这句表示从id2500 开始,从0行开始以偏移量20 查询下去。

SELECT * FROM table WHERE auto_id <2500 ORDER BY auto_id desc LIMIT 40,20
  • 1
  • 1
  • 原理还是一样,记录住当前页id的最大值和最小值,计算跳转页面和当前页相对偏移,由于页面相近,这个偏移量不会很大,这样的话m值相对较小,大大减少扫描的行数。 
      
  • 其实传统的limit m,n,相对的偏移一直是第一页,这样的话越翻到后面,效率越差,而上面给出的方法就没有这样的问题。
  • From:http://blog.csdn.net/agly_clarlie/article/details/53185750

转载于:https://www.cnblogs.com/jinxiang1224/p/8468257.html

你可能感兴趣的文章
jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关...
查看>>
错误状态码URL重定向
查看>>
离线安装mysql数据库
查看>>
利用R进行多元线性回归分析
查看>>
loj 558 我们的 CPU 遭到攻击
查看>>
Linux 搭建互信后,仍需要密码验证
查看>>
postgresql+postgis+pgrouting实现最短路径查询(3)--流程图
查看>>
[转]LINQ To SQL 语法及实例大全
查看>>
使用 Python 可以做什么?
查看>>
[LeetCode] Valid Palindrome
查看>>
[LeetCode] Longest Palindromic Substring
查看>>
一个请求
查看>>
map和reduce方法理解
查看>>
php调接口
查看>>
Delphi 实现多窗口任务栏显示图标《转》
查看>>
sql异常与函数
查看>>
Jquery Table 的基本操作
查看>>
eclips新建Maven Web项目
查看>>
Log4net使用
查看>>
python 安装psutil
查看>>