最近的产品测试发现一个问题,当并发数量小于10时,响应时间可以维持在100毫秒以内。但是当并发数到达30个时,响应时间就超过1秒。这太不能接受了,要求是通过1秒中并发100个。
经过检测发现,时间主要是耗在其中的一个存储过程中。把存储过程的语句一条一条的过一遍也没有发现明显的不合理。因为mysql本身不能提供毫秒级别的时间,google了一个mysql的能提供毫秒的时间函数,再做测试,做了一个定位。发现是其中一条语句,语句是这个样子:
select .... from A, B where .....and A.id in (select id from C where ...);
in 子查询语句的结果很少,就几条。explain 这条语句,也没有什么问题。单条测试也没有问题。但是当并发数大时问题就出来了。
做了个改变:
select ... from A,B,(select ... from C where ...) S where ....;
再做测试,性能大为改观。50个并发与10个并发几乎是相同的响应速度。
在mysql中,mysql可能都建议改成使用子查询的联合,而不用in。以前没有经过实验。现在终于看见其中的效率了。当然,也不能尽相信。还是得根据自己的应用来。最好是能做一些测试和实验。
分享到:
相关推荐
主要介绍了MySQL中使用or、in与union all在查询命令下的效率对比,论证了在通常情况下union all并不一定比or及in更快,需要的朋友可以参考下
因为mysql本身不能提供毫秒级别的时间,google了一个mysql的能提供毫秒的时间函数,再做测试,做了一个定位。发现是其中一条语句,语句是这个样子: select .... from A, B where .....and A.id in (select id ...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
两种mysql递归tree查询效率-mysql递归tree,提供两种递归算法
sql查询优化 提高MySQL数据库查询效率的几个技巧
MySQL锁类型以及查询锁表问题、解锁MySQL中select * for update锁表的范围MySQL中select * for update锁表的问题由
NULL 博文链接:https://thetopofqingshan.iteye.com/blog/1518502
本文介绍了数据库中常用的子查询和连表查询两种查询方式,并通过使用explain命令分析了它们的执行计划和效率。通过分析,得出了一般认为连表查询效率比子查询高的结论。同时,还介绍了优化连表查询的方法,如使用...
本txt文件包含MySQL数据库的子查询,附上练习代码,也有一些注释及讲解,虽然不多,但希望对有需要的童鞋有帮助。
今天看到一篇关于MySQL的IN子查询优化的案例, 一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试。) 随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子...
MySQL子查询示例数据库
本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询...
单击此处添加标题 * * * * * * * * * * * * 目录页 MYSQL联合查询上 联合查询注入原理-SQL的union查询 SQL中UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。...
多表查询和子查询
第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询...
mysql多表联合查询.pdf
在相关子查询中,子查询的执行依赖于外部查询,即子查询的查询条件依赖于外部查询的某个属性值。 执行过程:;在相关子查询中,子查询的执行依赖于外部查询,而嵌套子查询中,子查询的执行不依赖于外部查询。 执行...
什么是视图?视图就是一个存在于数据库中的虚拟表。视图本身没有数据,只是通过执行相应的select语句完成获得相应的数据。...如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询这种。