mysql关联查询操作表最新数据
mysql关联查询操作表最新数据
mysql关联查询操作表最新数据的几种方式(max,order by)和性能分析,再数据量较多,关联ID存在索引的情况下建议使用方式二,速度更快。具体请看SQL及EXPLAIN。
方式一:max最大操作时间
SELECT*FROM t1_test AS t1INNER JOIN (SELECT test_id,MAX(operate_time) operate_time FROM t2_test WHERE operate_type = 1 GROUP BY test_id) AS t2ON t1.test_id = t2.test_idWHERE t1.test_id IN (1,5,50,88,99,1666)
EXPLAIN截图如下,注意type,和rows
方式二:order by 时间 limit 1
SELECT*FROM t1_test AS t1INNER JOIN t2_test AS t2ON t2.id = (SELECT t3.idFROM t2_test AS t3WHERE t3.test_id = t1.test_idAND t3.operate_type = 1ORDER BY t3.operate_time DESC LIMIT 1)WHERE t1.test_id IN (1,5,50,88,99,1666)
在数据量少时可能没有太多区别,一旦数量量稍微大点,方式一的耗时就可能不是毫秒级的了,建议大家在copy的时候自己也实践一下,究其原因再使用会少很多问题的。最后附上SQL脚本,有兴趣的可以自己测试测试。
CREATE TABLE `t1_test` (`test_id` int NOT NULL AUTO_INCREMENT,`t1_name` varchar(255) DEFAULT NULL,PRIMARY KEY (`test_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15004 DEFAULT CHARSET=utf8;
CREATE TABLE `t2_test` (`id` int NOT NULL AUTO_INCREMENT,`test_id` int NOT NULL,`operate_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`operate_type` int DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,KEY `idx_test_id` (`test_id`)
) ENGINE=InnoDB AUTO_INCREMENT=125056 DEFAULT CHARSET=utf8;
新增数据存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_insert`()
BEGINDECLARE i INT;SET i = 1;WHILEi < 15000 DOINSERT INTO `t1_test` ( `t1_name` )VALUES('test999');SET i = i + 1;END WHILE;
END
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_insert2`()
BEGINDECLARE i INT;SET i = 1;WHILEi < 50000 DOINSERT INTO `t2_test` ( test_id,operate_type)VALUES(i,1);SET i = i + 1;END WHILE;
END
mysql关联查询操作表最新数据相关推荐
- mysql关联查询出现的数据不准确问题
主要还是自己对sql语句的掌握程度太低了,还需要多多加强sql语句编写,最初我的语句是这样写的: <select id="selOrdersByOid" parameterT ...
- mysql 查看当前事务id,MySQL 如何查询当前最新事务ID
写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时长等用途). 通常地,我们有两种方法可以查看当前的事务 ID ...
- Mysql 关联查询的优化 及 子查询优化
Mysql 关联查询的优化 left join ①EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card; ②如何优化 ...
- mysql如何查询昨天的数据
mysql如何查询昨天的数据 假设localdate为时间字段 select * from user where date(localdate) = date_sub(curdate(),interv ...
- mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据
使用pdo关联查询mysql数据 try { $pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456'); // 0.等 ...
- MySQL关联查询 COUNT数据不准确
前提 在业务开发中常遇到关联查询使用count()函数做统计的需求,同样在使用该函数时如果处理不当会导致统计出的数据是真实数据N倍的问题,出现重复问题导致统计不准确.出现该问题的原因是关联查询的主表与 ...
- MySQL—关联查询与子查询(从小白到大牛)
前言 在大部分的数据库查询中,我们往往都不是进行简单的单表查询,而是多表查询.所以我们也必须学习SQL查询中的高级部分,如内连接.外连接和子查询,通过这些查询技术我们将能够解决项目中复杂的查询问题. ...
- mysql 关联查询_响应时间长?MySQL查询优化教程来了!
- 点击上方"爱数据学习社"关注我们吧! - 为什么查询会慢?--响应时间过长. 如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询, ...
- mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了
优化器的作用: 我们知道,一条SQL语句,可以有很多执行方式,最后都返回相同的结果,而优化器的作用就是找到最好的执行计划. 一.RBO-基于规则的优化器(rule) 系统内置的一套硬编码规则,根据规则 ...
最新文章
- 摘自《读者》的哲理短句——赞美篇
- javaEE完整体系结构
- 好玩的Scratch
- RTP 时间戳的处理
- 软件测试之图覆盖(作业3)
- OpenCV(图像处理)—访问像素的三种方法
- 彻底删除win10易升
- 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
- 移动端日历组件设计与实现
- 如何使用plink进行二分类性状的GWAS分析并计算PRS得分
- ASO优化之预算不够该如何做优化
- 用python批量处理图片_Python学习九十三天:Python批量处理图片
- python使用keyboard库写的GUI键盘宏
- 2022年生鲜电商行业竞争分析
- Unity 3D光源-Spot Light聚光灯用法详解、模拟手电筒、台灯等线性教程
- 数据中台推不动?手把手教你落地搭建!
- 测量工具----示波器
- 【RMAN】数据库备份之冷备份
- 一飞库房管理系统 v1.0 bt
- html jade引入,html模板引擎jade的使用