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关联查询操作表最新数据相关推荐

  1. mysql关联查询出现的数据不准确问题

    主要还是自己对sql语句的掌握程度太低了,还需要多多加强sql语句编写,最初我的语句是这样写的: <select id="selOrdersByOid" parameterT ...

  2. mysql 查看当前事务id,MySQL 如何查询当前最新事务ID

    写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时长等用途). 通常地,我们有两种方法可以查看当前的事务 ID ...

  3. Mysql 关联查询的优化 及 子查询优化

    Mysql 关联查询的优化 left join ①EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card; ②如何优化 ...

  4. mysql如何查询昨天的数据

    mysql如何查询昨天的数据 假设localdate为时间字段 select * from user where date(localdate) = date_sub(curdate(),interv ...

  5. mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据

    使用pdo关联查询mysql数据 try { $pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456'); // 0.等 ...

  6. MySQL关联查询 COUNT数据不准确

    前提 在业务开发中常遇到关联查询使用count()函数做统计的需求,同样在使用该函数时如果处理不当会导致统计出的数据是真实数据N倍的问题,出现重复问题导致统计不准确.出现该问题的原因是关联查询的主表与 ...

  7. MySQL—关联查询与子查询(从小白到大牛)

    前言  在大部分的数据库查询中,我们往往都不是进行简单的单表查询,而是多表查询.所以我们也必须学习SQL查询中的高级部分,如内连接.外连接和子查询,通过这些查询技术我们将能够解决项目中复杂的查询问题. ...

  8. mysql 关联查询_响应时间长?MySQL查询优化教程来了!

    - 点击上方"爱数据学习社"关注我们吧! - 为什么查询会慢?--响应时间过长. 如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询, ...

  9. mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了

    优化器的作用: 我们知道,一条SQL语句,可以有很多执行方式,最后都返回相同的结果,而优化器的作用就是找到最好的执行计划. 一.RBO-基于规则的优化器(rule) 系统内置的一套硬编码规则,根据规则 ...

最新文章

  1. 摘自《读者》的哲理短句——赞美篇
  2. javaEE完整体系结构
  3. 好玩的Scratch
  4. RTP 时间戳的处理
  5. 软件测试之图覆盖(作业3)
  6. OpenCV(图像处理)—访问像素的三种方法
  7. 彻底删除win10易升
  8. 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
  9. 移动端日历组件设计与实现
  10. 如何使用plink进行二分类性状的GWAS分析并计算PRS得分
  11. ASO优化之预算不够该如何做优化
  12. 用python批量处理图片_Python学习九十三天:Python批量处理图片
  13. python使用keyboard库写的GUI键盘宏
  14. 2022年生鲜电商行业竞争分析
  15. Unity 3D光源-Spot Light聚光灯用法详解、模拟手电筒、台灯等线性教程
  16. 数据中台推不动?手把手教你落地搭建!
  17. 测量工具----示波器
  18. 【RMAN】数据库备份之冷备份
  19. 一飞库房管理系统 v1.0 bt
  20. html jade引入,html模板引擎jade的使用

热门文章

  1. 高考失利后如何调整心态?
  2. 2018第九届蓝桥杯B组决赛题解第一题 换零钞
  3. python编写的七夕
  4. root causes of KMT failing at mainland of China
  5. 泛函分析 03.01 内积空间与Hilbert空间-内积空间的基本性质
  6. 锂矿之时乘六龙:盛新锂能
  7. 这几款宝藏APP你知道多少
  8. 统计学:LMMSE线性最小均方误差估计
  9. 接收机的阻塞性能 相邻信道 相间信道
  10. Python将多张图片进行合并拼接