mysql中limit用法误区
2024-08-27 23:34:36
之前一直用oracle,在分页的时候用rownumber,转换到mysql上之后,用limit做分页;
在做某个业务的时候,需要先将数据排序,再分页,在给limit上参数的时候沿用了oracle的rownumber方式传参,最终导致了分页查到的数据越来越多,导致响应越来越慢,最终找到了问题所在;
错误代码:
SELECT * FROM td_corporation_user t WHERE (t.`corp_logo` IS NOT NULL AND t.`corp_logo` <> '') AND t.`corp_user_type` = '' ORDER BY t.`corp_member_number` asc limit 0,15; SELECT * FROM td_corporation_user t WHERE (t.`corp_logo` IS NOT NULL AND t.`corp_logo` <> '') AND t.`corp_user_type` = '' ORDER BY t.`corp_member_number` asc limit 15,31;
上面的代码1是第一次请求的sql,代码2是第二次请求的sql,可以看出limit的第二个参数在递增,这个问题最终导致了第二次请求的时候返回的是排序数据中15~46条数据,一共31条数据,以此类推,以后的会更大;
启示limit的第二个参数并不是像rownumber中行号的结束,而是取多少条数据,所以limit的第二个参数是不需要变的,只需要变第一个行号的起始即可
正确代码:
SELECT * FROM td_corporation_user t WHERE (t.`corp_logo` IS NOT NULL AND t.`corp_logo` <> '') AND t.`corp_user_type` = '' ORDER BY t.`corp_member_number` asc limit 0,15; SELECT * FROM td_corporation_user t WHERE (t.`corp_logo` IS NOT NULL AND t.`corp_logo` <> '') AND t.`corp_user_type` = '' ORDER BY t.`corp_member_number` asc limit 15,15;
最新文章
- asp.net 验证码(一)Session
- 限制EditText最多输入多少汉字
- webServices
- ik分词
- windows环境自动获取SVN仓库当前版本
- PHP不使用递归的无限级分类
- delphi 预览图片2 (MouseUP)
- selenium框架与chrome浏览器的不兼容问题
- 【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)
- yml 文件操作方法
- 第一周-JAVA基本概念
- JavaScript处理null、undefined和空值
- loadrunner的安装与破解
- .netcore 堆栈调用方法小记
- python初始化环境记录
- 【倍增】Tak and Hotels II @ABC044&;ARC060/upcexam6463
- DbSet<;T>;().Where(e =>; true)之后再想Include怎么办?
- cocos2d-js 小知识
- ubuntu 电源管理
- CodeForces 459C Pashmak and Buses(构造)题解