mysql 先子查询过滤再联合 和 先联合再过滤 执行效率问题

执行顺序

  1. 先子查询过滤再联合
SELECT  XXX  FROM(select * from edw_data_dyd.overrun_offsite_info WHERELENGTH( VEHICLE_ID ) >= 12 AND CREATED_TIME >= DATE_ADD(NOW(),INTERVAL -1 HOUR)AND CREATED_TIME < NOW()AND VEHICLE_ID not like '%无车牌%'AND VEHICLE_ID not like '%无法识别%'AND a.VEHICLE_TYPE_ID = '1'AND VEHICLE_TYPE_ID in('1',"11","12","13","14","15","16")) aLEFT JOIN edw_data_eda.global_vehicle b ON RIGHT ( a.VEHICLE_ID, 7 ) = b.plate_number and LEFT(a.VEHICLE_ID,1) = LEFT(b.PLATE_COLOR_NAME,1)LEFT JOIN edw_data_dyd.sys_station c ON a.STATION_IP = c.stationcode inner join ( select *  from overrun_offsite_info_response where  CREATED_TIME >= DATE_ADD(NOW(),INTERVAL -1 HOUR) AND CREATED_TIME < NOW() ) as ooir on a.unique_id = ooir.unique_id
WHEREc.regionalcode IS NOT NULLAND c.regionalname IS NOT NULLand ooir.flag = 1  

这种方式是,overrun_offsite_info 、overrun_offsite_info_response 先过滤数据,然后再进行联合查询(预处理)

  1. 先联合再过滤
SELECT  XXX  FROMedw_data_dyd.overrun_offsite_info a LEFT JOIN edw_data_eda.global_vehicle b ON RIGHT ( a.VEHICLE_ID, 7 ) = b.plate_number and LEFT(a.VEHICLE_ID,1) = LEFT(b.PLATE_COLOR_NAME,1)LEFT JOIN edw_data_dyd.sys_station c ON a.STATION_IP = c.stationcode inner join overrun_offsite_info_response as ooir on a.unique_id = ooir.unique_id
WHERELENGTH( a.VEHICLE_ID ) >= 12 AND a.CREATED_TIME >= DATE_ADD(NOW(),INTERVAL -1 HOUR)AND a.CREATED_TIME < NOW()AND ooir.CREATED_TIME >= DATE_ADD(NOW(),INTERVAL -1 HOUR)AND ooir.CREATED_TIME < NOW()AND a.VEHICLE_ID not like '%无车牌%'AND a.VEHICLE_ID not like '%无法识别%'AND a.VEHICLE_TYPE_ID in('1',"11","12","13","14","15","16")AND c.regionalcode IS NOT NULLAND c.regionalname IS NOT NULLand a.unique_id is not nulland ooir.flag = 1 

这种方式:数据库表先进行联合查询,形成自然连接,再进行条件过滤
在这里插入图片描述

通过explain查询后,得到的执行顺序,过滤条数是一致的。
因此以上两种方式执行时间是一样的,这两种写法被mysql查询优化器优化后,应该是一样执行顺序。

执行时间

  1. 在overrun_offsite_info_response 没有添加过滤条件是,执行时间是1000多秒,因为overrun_offsite_info_response 的数据量是300多万条数据,因此自然连接后的数据量特别的大。
  2. 解决方法; 给 overrun_offsite_info_response 添加 CREATED_TIME字段,过滤数据后,sql的执行时间从1000多秒提升到5秒,极大地优化了查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac中maven配置安装路径

Mac中maven配置安装路径 没有下载maven的可以先下载&#xff1a;&#xff08;这里建议maven版本不要下高了&#xff09; 如果你的bash_profile中没有配置JAVA_HOME路径&#xff0c;可以按照下面的命令配置一下 获取JAVA的安装路径&#xff1a; /usr/libexec/java_home -V …

Pycharm2024最新版community社区版下载安装配置,快速上手

第一步&#xff1a;下载 方法1&#xff1a;官网链接 https://www.jetbrains.com/pycharm/download/?sectionwindows .方法2&#xff1a;百度网盘 链接&#xff1a;https://pan.baidu.com/s/1ic2N5hUQ2m1Kmyr5nK9Jxw?pwd76dt 提取码&#xff1a;76dt --来自百度网盘超级…

接口自动化测试框架实战-2-项目接口文档

上一小节我们完成了项目开发环境的搭建&#xff0c;本小结我们具体介绍一下项目中使用到的接口文档。 本次我们以钉钉开放接口作为项目接口测试的示例&#xff0c;方便大家都能统一学习和调用&#xff0c;具体接口如下&#xff1a; 1、获取企业内部应用的access_token 在获取…

poi库简单使用(java如何实现动态替换模板Word内容)

目录 Blue留言&#xff1a; Blue的推荐&#xff1a; 什么是poi库&#xff1f; 实现动态替换 第一步&#xff1a;依赖 第二步&#xff1a;实现word模板中替换文字 模板word&#xff1a; 通过以下代码&#xff1a;&#xff08;自己建一个类&#xff0c;随意取名&#xf…

(8) ubuntu ROS 安装

文章目录 安装流程1. 进入ros官网2. 根据自己ubuntu系统选择版本&#xff08;我是20.04的ubuntu&#xff09;3.根据流程开始安装3.1 设置sources.list 4.验证ros5.安装rosdep 安装流程 1. 进入ros官网 https://www.ros.org/ 2. 根据自己ubuntu系统选择版本&#xff08;我是2…

ORB_SLAM2 ORBSLAM2 Ubuntu20.04 ROS Noetic虚拟机镜像下载

下图是build.sh 和 build_ros.sh 编译完成截图&#xff1a; slam测试视频: orbslam2 ubuntu20.04 test 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/16R7Pb6LjgR5SeoeBSZfgaQ?pwdu05r 提取码&#xff1a;u05r

【电源专题】结合锂电池相关资料和华为手机聊聊锂离子电池使用条件限制

在文章:【电源专题】锂电池的特点和工作原理 中我们讲到了一些关于锂电池种类和特点、工作原理等。但是对于锂离子电池使用条件限制却没有介绍,本文基于手机产商 锂离子电池使用条件-电池性能和应用介绍 | 华为官网 (huawei.com)提供的介绍文档再次深入学习锂离子电池的一些特…

FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 接上一篇文章FastAPI&#xff08;六十六&#xff09;实战开发《在线课程学习系统》接口开发--用户注册接口开发。这次我们分享实际开发--用户登陆接口…

面试知识储备-redis和redission

1.redis的使用 引入依赖&#xff0c;自动注解redistemplate即可使用&#xff0c; 默认的redistemplate存入到redis中是字符流的形式&#xff0c;需要配置redistemplate&#xff0c; 如果不想配置&#xff0c;可以使用stringRedistemplate 可以使用string类型&#xff0c;但是…

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现GA-Transformer-LSTM多变量回归预测&#xff0c;遗传优化算法&#…

书生大模型实战营闯关记录----第二关:实现word_count统计文本中word频次

实现word_count统计文本中word频次 请实现一个wordcount函数&#xff0c;统计英文字符串中每个单词出现的次数。返回一个字典&#xff0c;key为单词&#xff0c;value为对应单词出现的次数。 Eg: Input: """Hello world! This is an example. Word coun…

每日刷题记录(codetop版)

7.21 7.22 7.23 复习7.21和7.22

并发情况导致事务失效的场景

public void test(Pageable request){for (int i 0; i < 100; i) {//新建线程处理new Thread(() -> {userInfoService.testDemo();}).start();} } 这里创建多个线程模拟多并发场景 Transactional(rollbackOn Exception.class) public synchronized void testDemo() {…

一文入门SpringSecurity 5

目录 提示 Apache Shiro和Spring Security 认证和授权 RBAC Demo 环境 Controller 引入Spring Security 初探Security原理 认证授权图示​编辑 图中涉及的类和接口 流程总结 提示 Spring Security源码的接口名和方法名都很长&#xff0c;看源码的时候要见名知意&am…

海外IP代理科普:代理池有什么用?代理池大小的影响

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…

使用GoAccess进行Web日志可视化

运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您&#xff0c;但要完全了解正在发生的事情&#xff0c;唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…

C++的UI框架和开源项目介绍

文章目录 1.QT2.wxWidgets3.Dear ImGui 1.QT QT的开源项目&#xff1a;QGIS&#xff08;地理信息系统&#xff09; https://github.com/qgis/QGIS?tabreadme-ov-file 2.wxWidgets wxWidgets的开源项目&#xff1a;filezilla https://svn.filezilla-project.org/svn/ wxWidg…

环形链表的相关证明

141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

基于MobileNetv2的垃圾分类函数式自动微分-昇思25天打卡

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…