文档章节

MySQL范围查询优化,Between与大于等于对比及优化

RippleChan
 RippleChan
发布于 2017/04/03 03:43
字数 486
阅读 6549
收藏 2

    此博文带有强烈的业务倾向性,不适用所有场景,我的业务,最终结果只会出现1条结果。

    直接上SQL,然后逐一分析(所有Where查询条件,都有索引),如果你是新手(好吧,其实我也是新手),可以自行分析下,哪条查询效率最佳:

SELECT * FROM XXX_0 WHERE XXX_START >= 0 AND XXX_END <= 0;
SELECT * FROM XXX_0 WHERE XXX_START <= 0 AND XXX_END >= 0 LIMIT 1;
SELECT * FROM XXX_0 WHERE 0 BETWEEN XXX_START AND XXX_END;
SELECT * FROM XXX_0 WHERE 0 BETWEEN XXX_START AND XXX_END LIMIT 1;
SELECT * FROM XXX_0 WHERE XXX_START >= 0 LIMIT 1;

    五条SQL,依次编号为:0-4。

    0和1,都是通过>&<做范围查询,至于使用LIMIT 1的效率提升呢?提升肯定是有的,根据我得数据规模泛泛测试,效率大概提升2倍,但,更重要的是,加入Limit后,查询结果能够被一级缓存保存!这是Limit最大的好处。当然,从底层分析的话,加入Limit 1后,匹配到一条数据后,就不会再往下查询了,所以,性能的提升和数据量的大小有很大关系。

    2和3,情况貌似和0、1差不多,但其实有差别的,大于等于查询,如果没有limit的话(相信对结果的数目也有限制),无法被一级缓存缓存,而between的结果,则能够被缓存。所以,如果能用between,那么就不要使用大于等于了。

    4,根据我的业务,这才是最优查询,为什么呢?我只需要使用一个索引,这无疑降低了IO开销,同时,使用LIMIT 1保证匹配到一条数据后,就不再往下查询,提升了执行效率,还有就是一级缓存的使用了。

PS:SQL优化真是博大精深啊,还有,用BETWEEN的时候注意顺序噢。

© 著作权归作者所有

RippleChan

RippleChan

粉丝 50
博文 118
码字总数 34114
作品 0
朝阳
程序员
私信 提问
Mongodb基础实践(二)

在前面的文章里面主要介绍了MongoDB的文档,集合,数据库等操作和对文档的增、删、改相关知识,接下来会总结一点有关查询的相关知识。 在MySQL中,我们知道数据查询是优化的主要内容,读写分离...

tianya1993
2017/06/01
0
0
数据库查询返回特定结果即分页查询

1 几种不同数据库的不同的分页写法: a mysql a) 查询前n条记录select * from table_name limit 0,nb) 查询第n条到第m条select * from table_name limit n,m b oracle a)查询前n条记录selec...

王小明123
2013/06/08
4.2K
0
mysql_一条查询语句的执行流程

mysql的逻辑架构 一条查询语句的执行流程 连接器 查询缓存 但是大多数情况下建议不要使用查询缓存,为什么呢?因为查询缓存往往弊大于利。 分析器 如果没有命中查询缓存,就要开始真正执行语...

grace_233
2018/11/22
70
0
MySQL手册学习:select优化 .md

概述 数据库的优化最常见最有用的就是对于SQL的优化,而一般的业务SQL大多是以查询为主,也就是select语句。做好对select语句的优化工作,数据库的性能优化也就事半功倍。此次,就按MySQL5....

高云平
05/31
0
0
lbs中从库中查询某经纬度2KM范围内的数据

sql语句查询经纬度范围 指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude为数...

laserdance
2012/02/16
4.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
50分钟前
4
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
14
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部