博客
关于我
MySQL多表关联on和where速度对比实测谁更快
阅读量:799 次
发布时间:2023-02-12

本文共 897 字,大约阅读时间需要 2 分钟。

MySQL多表关联on和where速度对比实测

背景

最近在技术讨论群中发现一个有趣的话题:在MySQL中,当我们需要通过特定字段对两张数据表进行关联时,使用ON还是WHERE更高效?为了彻底解决这个问题,我们决定亲自来做一个实测。

先说结论

通过大量测试数据,我们发现以下结论:

  • 对等查询ONWHERE 的速度基本一致,差异可忽略不计。
  • 不对等查询:在存在大量不等记录的情况下,WHERE 查询效率会更高。

数据集准备

为了保证测试的科学性,我们准备了以下数据集:

  • member表:存储了20万条记录,字段包括member_idclass_id等。
  • member_class表:同样存储了20万条记录,字段包括idclass_name等。
  • member_v2表:与member_class表类似,但class_id字段只有20%与member_class.id存在对应关系。
  • 对全表的查询测试

    我们分别对两张表执行了全表联接查询,分别测试WHEREON的性能。为了确保结果的准确性,每条查询结果都重复测试了20次。

    • WHERE查询:平均耗时为0.2557秒。
    • ON查询:平均耗时为0.2498秒。两者速度基本一致,差异极为微小。

    存在不等记录的查询测试

    为了测试不对等记录的场景,我们创建了一个新的表member_v2,其中class_id字段只有20%与member_class.id存在对应关系。我们再次执行全表联接查询。

    • WHERE查询:由于WHERE语句能够自动过滤不等记录,查询效率保持较高,平均耗时为0.2557秒。
    • ON查询:由于ON语句会强制生成不等记录(通过左连接),这会导致中间表查询效率下降,平均耗时为0.2498秒。可以看出,在存在大量不等记录的情况下,WHERE查询更高效。

    结论

    通过以上测试,我们得出以下结论:

    • 在对等查询场景下,ONWHERE的速度基本一致。
    • 在不对等查询场景下,WHERE查询效率更高。

    这种情况下,WHERE的优势在于能够自动过滤不等记录,从而提高查询效率。而ON在处理对等记录时表现更优,但在存在不等记录时则显得不够理想。

    转载地址:http://nebfk.baihongyu.com/

    你可能感兴趣的文章
    nacos报错com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
    查看>>
    nacos服务提供和发现及客户端负载均衡配置
    查看>>
    Nacos服务注册与发现demo
    查看>>
    Nacos服务注册与发现的2种实现方法!
    查看>>
    nacos服务注册和发现原理简单实现案例
    查看>>
    Nacos服务注册总流程(源码分析)
    查看>>
    nacos服务注册流程
    查看>>
    Nacos服务部署安装
    查看>>
    nacos本地可以,上服务器报错
    查看>>
    Nacos注册Dubbo(2.7.x)以及namespace配置
    查看>>
    Nacos注册中心有几种调用方式?
    查看>>
    nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
    查看>>
    Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
    查看>>
    nacos看这一篇文章就够了
    查看>>
    Nacos简介、下载与配置持久化到Mysql
    查看>>
    Nacos简介和控制台服务安装
    查看>>
    Nacos管理界面详细介绍
    查看>>