MySQL in和limit不能连用的问题
今天在mysql上处理一个数据量达到千万级的数据库表时,要取出满足条件的数据集,然后存入到mongo数据库,使用JPA提供的Pageble去拿分页,再用多线程去取数据时,发现刚开始效率还可以,肯定比单线程强很多,但是这个Pageable有一个问题,在生成sql语句时,会自动加上一个limit *,10000,这样的限制条件,“*”代表从哪一行开始取数据,10000代表本次操作取10000条数据。这种操作会严重占用服务器的缓存,如果你在执行这种操作,别人也在访问时,会导致大家一起都卡得一比。
解决方法就是用一个并发队列来存储每一页的最后一条数据的id,但是我遇到了一个问题:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
limit不能和IN这样的只是范围的关键字直接连用,错误的sql和改进后的sql。
//出错的sql
select max(id) from news_info where id in (select id from news_info where where pub_date>?1 and id>?2 order by id limit 10000) //正确的sql
select max(id) from news_info where id in (select id from (select id from news_info where pub_date>?1 and id>?2 order by id limit 10000) as news)
既然不能直接连用,那就再中间创建一个临时表咯。
MySQL in和limit不能连用的问题的更多相关文章
- mysql 存储过程中limit
1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.mysql的低版本(5.1),存储过程 ...
- Mysql 分页语句Limit用法
转载自:http://qimo601.iteye.com/blog/1634748 1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用 ...
- 【转】Mysql分页语句Limit用法
http://qimo601.iteye.com/blog/1634748 FAQ: MYSQL limit,offset 区别 SELECT keyword FROM `keyword_rank` ...
- mysql中的limit
mysql中常使用limit做分页查询,使用方法也很简单: SELECT * FROM table LIMIT [offset,] rows #注: offset-偏移量,rows查询返回的行数 -- ...
- mysql进阶(七)limit的用法
limit是mysql的语法 select * from table limit m,n 其中m是指记录开始的index,从0开始,表示第一条记录 n是指从第m+1条开始,取n条. select * ...
- MYSQL查询优化:Limit
Limit语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT子句可以被用于强制 SELECT 语句返回指定的 ...
- MySql存储过程中limit传参
最近做项目用到了MySQL数据库,感觉还是蛮好用的,但是有同事前几天写存储过程的时候老调不通,我看了看后发现把limit语句后面带的参数随便改成一个数字就调试通过了,不知道是MySql当初就这么设计的 ...
- Mysql分页之limit用法与limit优化
Mysql limit分页语句用法 与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭. --语法: SELECT * FROM table LIMIT [offset, ...
- mysql分页的limit优化
1.很多新人都会很纳闷,为什么我建了索引使用分页还是这么卡.好,现在让我们一步一步去找原因吧. 首先limit本身跟索引没有直接关系. 先建一张商品sku表 create table goods_sk ...
随机推荐
- 【图像处理】H.264流媒体播放
相信有不少人和我一样,希望实现H264格式视频的流媒体播放.但是对于一个新手来说,往往不知道从何入手.利用百度,GOOGLE等搜索资料真是沙里淘金.在琢磨了N周之后,才弄出来了点成果,其中费了很多无用 ...
- smoothscroll
smoothscroll是一款jQuery插件,可以平滑地滚动到指定的地方. 可以解决chrome锚点失效的问题. 官方网站 http://iamdustan.com/smoothscroll/ gi ...
- Git 的配置
一般配置用户层面配置 Git 的配置从上到下分三层 system/global/local,使用三个不同参数进行设置,每个层次的配置存储在不同的位置, 1)./etc/gitconfig 文件:包含了 ...
- Linux下测试ZLAN 5800
今天师兄让帮忙测试ZLAN 5800八串口通信模块,windows下的测试按照手册来已经搞定,接下来是Linux下的测试. 因为厂家不提供Linux下的相关资料,所以需要在windows下设置好后直接 ...
- javascript的一些有用函数记录,不断更新。。。
addLoadEvent函数: 众所周知,html文档加载完后会立即执行一个onload函数.但是onload函数只能包含一个被执行的函数,也就是你需要在加载完文档后执行的一个自己的函数.在实际中ht ...
- iptables笔记
一.内核转发 *永久开启转发 sysctl -w net.ipv4.ip_forward=1 *查看当前 cat /proc/sys/net/ipv4/ip_forward * 暂时开启 echo 1 ...
- Codeforces 1237C2. Balanced Removals (Harder)
传送门 先来考虑一下二维时的情况,那么对于 $x$ 相同的点,我们按 $y$ 排序,然后相邻的一对对消除 最后 $x$ 坐标相同的点最多剩下一个,那么此时所有点的 $x$ 坐标都不一样 再按 $x$ ...
- python2.7学习笔记——菜鸟教程
标准数据类型 Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) list = [ 'runoob', 786 , 2.23, 'joh ...
- linux查询cpu过高原因--java
1. 查询java pid top -c 2. 查询java进程下,线程情况 top -Hp pid(threadIdList) 3. 将10进制线程id转为16进制 printf "%x ...
- Spring boot data jpa 示例
一.maven pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...