sql limit order by and where
1 sql limit
limit size,返回前size行。
limit offset , size,返回offset开始的size行,offset从0行开始。
2 sql limit with where
where先对基础数据按行进行过滤,然后limit操作在这个经过过滤的数据基础至上。
3 sql limit with order by
对基础数据进行排序,然后再进行limit操作,这样保证返回的结果的顺序确定。
用了order by返回的结果也不是确定的,如果是基于非唯一字段排序的,那么返回的结果也可能不一样,要确定一样,那么就要基于唯一性字段排序。
用了limit的order by不会全表排序的,它会全表扫描,然后找到前n大的后就直接返回了,如果是索引列的话,因为已经排好序了,就会非常快了。
如果非唯一字段排序,但是要求结果一致的话,可以采用下面的办法:
可以额外加一个排序条件。例如id字段是唯一的,可以考虑在排序字段中额外加个id排序去确保顺序稳定。
所以上面的情况下可以在SQL再添加个排序字段,比如fund_flow的id字段,这样分页的问题就解决了。修改后的SQL可以像下面这样:
SELECT * FROM user
ORDER BY create_time,id LIMIT 6,2;
4 sql limit without order by
返回的结果的顺序不是固定的,但是结果是一致的,只要原始数据不变化。
5 大表时提高limit的效率
select * from product limit 866613, 20 37.44秒
limit语句的查询时间与起始记录的位置成正比,因为需要从头开始遍历整个表来找到866613的位置。
解决办法:
使用索引,帮助sql引擎找到866613的位置。使用覆盖索引,即只包含索引的列。
select id from product limit 866613, 20 0.2秒
SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20
或者使用join
SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.id = b.id
sql limit order by and where的更多相关文章
- paip.索引优化---sql distict—order by 法
paip.索引优化---sql distict—order by 法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- SQL limit(分页)
1.limit使用 limit参数,第一个参数:从哪儿开始查:第二个参数:查几条 i : 为查询结果的索引值(默认从0开始): n : 为查询结果返回的数量 -- 从3开始 取 3 条 SELECT ...
- 如何在SAS中重新构建限价指令簿(Limit Order Book):使用HashTable
在之前的一篇日志里(http://blog.csdn.net/u010501526/article/details/8875446),我将重新构建LOB(Limit Order Book)分为了三步 ...
- mysql sql limit where having order
SQL语句执行顺序及MySQL中limit的用法 . 分类: MySql2013-09-02 09:1315人阅读评论(0)收藏举报 写的顺序:select ... from... where.... ...
- MySQL Limit order by
今天写模糊查询的时候,按照时间排序并进行分页时,在mybatis的映射文件中有这样一条sql语句 SELECT <include refid="Base_Column_List&quo ...
- 为什么MYSQL分页时使用limit+ order by会出现数据重复问题
问题描述: MYSQL采用limit进行翻页查询时,搭配order by ,在翻到第二页的时候可能会出现第一页的数据, 示例sql如下: select a,b from c where d = ' ...
- 《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)
<MySQL必知必会>检索数据,排序检索数据 1.检索数据 1.1 select 语句 为了使用SELECT检索表数据,必须至少给出两条信息一想选择什 么,以及从什么地方选择. 1.2 检 ...
- sql语句,order by
ORDER BY子句必须出现在SELECT中的最后一个子句. 在排序的列中NULL值被认为是最大的. 在SQL语句中给表达式定义别名是一个好习惯. 多列排序时不管升序还是降序,每个列需要单独设置
- 数据库排序sql,order by
一开始我认为 SELECT * FROM dbo.T_User ORDER BY CreateTime ,IsDel DESC 的执行顺序是先按创建时间倒序排序,再按isdel倒序排序,所以我就没再S ...
随机推荐
- 常用cmd命令总结
1.常用操作 cls #清屏set #查看环境变量cd #切换工作目录 (换盘:直接输入 C: 或 D:)cd.. #返回上级目录exit #关闭cmd窗口 2.有关Python pip instal ...
- 对vue虚拟dom的研究
Vue.js通过编译将template 模板转换成渲染函数(render ) ,执行渲染函数就可以得到一个虚拟节点树 在对 Model 进行操作的时候,会触发对应 Dep 中的 Watcher 对象. ...
- R-CNN常见问题
可以不进行特定样本下的微调吗?可以直接采用AlexNet CNN网络的特征进行SVM训练吗? 不针对特定任务进行微调,而将CNN当成特征提取器,pool5层得到的特征是基础特征,类似于HOG.SIFT ...
- Spring Cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角色 client:调用资源服务器API的应用 O ...
- springboot 基于@Scheduled注解 实现定时任务
前言 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer) 前者相信大家都很熟悉, ...
- vue 自己写的一个日历
样式: //quanbu全部代码 <template> <div class="priceListContent clearfix"> <!-- 顶部 ...
- eclipse连接Mysql和测试
一.前期准备: 1.eclipse 2.Mysql workbench 3.jdbc 下载地址:https://www.mysql.com/products/connector/ 点击JDBC Dri ...
- linux可用的跨平台C# .net standard2.0 写的高性能socket框架
能在window(IOCP)/linux(epoll)运行,基于C# .net standard2.0 写的socket框架,可使用于.net Framework/dotnet core程序集,.使用 ...
- Mybaits解决实体类字段与数据库字段不一致问题
public class Employee { private Integer id; private String lastName; private String email; private S ...
- 七、chromedriver各版本下载网址
http://chromedriver.storage.googleapis.com/index.html