mysql 查找最近一条记录_关于mysql查询最近一条记录
关于mysql查询最近一条记录
最近项目中遇到需要查询记录当前时间最近的一条记录的问题,开始感觉无从下手,后来逐步发现了三种解决方案。
下策——查询出结果后将时间排序后取第一条
select * from a
where time<="2017-03-29 19:30:36"
order by time desc
limit 1
这样做虽然可以取出当前时间最近的一条记录,但是一次查询需要将表遍历一遍,对于百万以上数据查询将比较费时;limit是先取出全部结果,然后取第一条,相当于查询中占用了不必要的时间和空间;还有如果需要批量取出最近一条记录,比方说:“一个订单表,有用户,订单时间,金额,需要一次性查询所有用户的最近的一条订单记录”,那么每个用户一次查询就要做一次整表的遍历,数据大的情况下,时间将会以指数形式增长,不能投入实际使用。
中策——查询排序后group by
select * from (
select * from a
where time<="2017-03-29 19:30:36"
order by time desc
) group by user_id
后来发现使用group by 可以根据group by 的参数列分组,但返回的结果只有一条,仔细观察发现group by是将分组后的第一条记录返回。时间在查询后默认是顺序排列,因此需要先将时间倒序排列,方可取出距离当前最近一条。
这样查询实际上还是进行了两次查询,虽然时间上相比第一个方法有了质的飞跃,但是还可以进一步优化。
上策——将max() 方法和group by结合使用
select *,max(time) from a
where time<="2017-03-29 19:30:36"
group by user_id
这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。
from:https://www.cnblogs.com/wwyz/p/6641895.html
mysql 查找最近一条记录_关于mysql查询最近一条记录相关推荐
- 怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...
请点击上方快速关注 思域HATCHBACK很火.这款被誉为"国产Type R"的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围.中置排气和手动变 ...
- mysql中标记某条数据库_一个关系数据库表中的各条记录可以什么
一个关系数据库表中的各条记录前后顺序可以任意颠倒,不影响数据库中数据的实际意义.一个关系数据库的表中有多条记录,记录之间的前后顺序并不会对库中的数据关系产生影响,所以行的顺序是无所谓的,可以任意颠倒. ...
- 如何给mysql表添加百万条数据_给mysql一百万条数据的表添加索引
直接alter table add index 添加索引,执行一个小时没反应,并且会导致锁表:故放弃该办法,最终解决办法如下: 一.打开mysql 命令行客户端 这里我们那可以看到导出的数据文件所存放 ...
- mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)
站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...
- mysql id自动递增两个_浅析Mysql索引数据结构演变,让你一看就懂
前言 相信小伙伴应该都用到过mysql数据库,在mysql数据库中,为了提升查询效率,都会使用到索引技术.今天老顾就来介绍一下mysql索引的数据结构的演变. 数据查询 我们来看一下有个用户表,存放这 ...
- mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
MySQL有两种方式可以生成有序的结果:通过排序操作:或者按索引顺序扫描:如果explain出来的type列的值为index,则说明MySQL使用了索引扫描来做排序. 扫描索引本身是很快的,因为只需要 ...
- mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...
@(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...
- mysql第五章项目二_高性能MySQL笔记 第5章 创建高性能的索引
索引(index),在MySQL中也被叫做键(key),是存储引擎用于快速找到记录的一种数据结构.索引优化是对查询性能优化最有效的手段. 5.1 索引基础 索引的类型 索引是在存储引擎层而不是服务器层 ...
- mysql数据库是一个软件呐_【MySQL数据库软件、SQL】
内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. ...
最新文章
- ns3入门案例1 first.cc
- python中的常量可以修改吗_深入理解Python变量与常量
- java 课后习题 Vector类的 初使用
- 展望 | 2020年人工智能八大趋势
- Gradient Descent(机器学习之梯度下降法)
- 2.3.14 Python 函数进阶-生成器
- 视频标签- video 音频标签- audio
- js call和apply方法小结
- php smarty配置,PHP中使用Smarty模板目录结构配置
- cesium 经纬度绘制点_Cesium搜索经纬度并标点
- 系统学习语义分割文章推荐以及顺序
- 19. shift,shift n,位置变量,命令行参数控制,shift语法,用法示例
- python使用selenium进行浏览器中途调试的方法
- tomcat无法响应请求,假死
- 写论文有哪些神网站?
- ZZNUOJ_C语言1088:手机短号 (多实例)(完整代码)
- (批处理学习)句柄备份——个人见解之“>nul 3>nul“——记录学习过程(详细)
- Vue搭建可视化界面
- mysql建表及DML语句
- 东营汽车音响改装哪里好?汽车音响调音秘决
热门文章
- Canvas画圆形刻度表
- zookeeper的zab协议工作原理
- oracle表关联为什么不走索引,Oracle执行计划不走索引的原因总结
- 将图片嵌入Markdown文档
- 超级课程表显示服务器错误,超级课程表怎么注册?超级课程表注册不了怎么办?...
- RT-Thread嵌入式操作系统
- java毕设开源啦,springboot+bootstrap库存管理系统
- python中文字体下载_Python在Matplotlib图中显示中文字体的操作方法
- php网页分类的修改,php网站分类目录 网站收录 网址导航程序 织梦二次开发
- 2021数维杯全网最全:背景下的港口资源配置优化策略