MySQL到底是join性能好,还是in一下更快呢?( 二 )


MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
看时间的话,明显 join 更快一些 。
04 万条数据情况user表现在10000条数据,order表10000条试下 。
4.1 join
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
4.2 inorder 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
user 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
4.3 并发场景join 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
in 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
数据量达到万级别,非并发场景,in 更快,并发场景 join 更快 。
05 十万条数据情况随机插入后user表十万条数据,order表一百万条试下 。
5.1 join【MySQL到底是join性能好,还是in一下更快呢?】
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
5.2 inorder 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
user 耗时:
order查出来的结果过长了...
5.3 并发场景join 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
in 耗时:
MySQL到底是join性能好,还是in一下更快呢?

文章插图
图片
数据量达到十万/百万级别,非并发场景,in 过长,并发场景 join 更快 。
06 总结实验结论:
  • 数据量不到万级别,join 和 in 差不多;
  • 数据量达到万级别 , 非并发场景,in 更快,并发场景 join 更快;
  • 数据量达到十万/百万级别 , 非并发场景,in 过长,并发场景 join 更快 。
下面是楼仔给出的一些建议 。
当数据量比较小时,建议用 in,虽然两者的性能差不多,但是 join 会增加 sql 的复杂度,后续再变更,会非常麻烦 。
当数据量比较大时,建议用 join,主要还是出于查询性能的考虑 。
不过使用 join 时,小表驱动大表,一定要建立索引 , join 的表最好不要超过 3 个,否则性能会非常差,还会大大增加 sql 的复杂度,非常不利于后续功能扩展 。




推荐阅读