mysql 查询不出结果_mysql 执行查询SQL 一直执行不出结果

2023-10-30

今天执行一个mysql 语句, 一直在 执行,执行了5分钟了,还是没有出来结果。

# 每个组织下包括 同级或者下级的 注册店铺数

# 查询 历史每一天的每个组织下的当天存在的门店数

select

dt.`time` startDate,

o.brand_id as brandId,

o.id AS orgId,

count(ogstore.id) as totalStore

from om_organization o

inner join view_om_org_tree ot on ot.parent_id=o.id

left join da_dim_time dt on dt.dim_type="DAY" and dt.`time`>="2018-10-30" and dt.`time` < CURDATE()

INNER JOIN (

select orge.id,orge.create_time as cdate from om_organization orge where

orge.org_type="Store" and orge.removed=0

) as ogstore on ogstore.id=ot.id and ogstore.cdate<=dt.`time`

where 1=1

and o.removed=0

group by o.id, dt.`time`

以上SQL ,看起来逻辑也挺清晰的,而且也不算长SQL了。但是 执行起来 很久没有结果。

无奈只能中断查询了, 试过加了索引发现还是没有用。 查询执行性能如下

1SIMPLEdtrangeidx_time,idx_time2,idx_typeidx_time39391100Using where; Using index; Using temporary; Using filesort

1SIMPLEorgeALLPRIMARY,idx_orgtype110539.09Using where; Using join buffer (Block Nested Loop)

1SIMPLEotrefidx_key,idx_pididx_key8newpearl_db_dev.orge.id6100Using index

1SIMPLEoeq_refPRIMARYPRIMARY8newpearl_db_dev.ot.parent_id150Using where

也不算 很多数据啊, 行数 最多的要 10000多行了。

解决办法

改写了 半天, 我觉得是 以上SQL写法 不够清晰,易懂。一定要写出来 让mysql 很容易明白,解析的SQL才行

SELECT

dt.`time` startDate,

o.brand_id as brandId,

o.id AS orgId,

SUM(ff.totalStore) as totalStore

from

da_dim_time dt ,

(

select

DATE(orge.create_time) ctime,

o.id AS orgId,

count(ot.id) as totalStore

from om_organization o

inner join view_om_org_tree ot on ot.parent_id=o.id

INNER JOIN om_organization orge

on orge.id=ot.id

and orge.org_type="Store" and orge.removed=0

where 1=1

and o.removed=0

group by o.id, ctime

) ff

,

om_organization o

where o.removed=0 and ff.orgId=o.id

and dt.dim_type="DAY" and dt.`time`>="2018-10-30" and dt.`time` < CURDATE()

and ff.ctime <=dt.`time`

and o.id=1

GROUP BY dt.`time`, o.id

同时耗时才 0.15s 难以相信

最终写出来了, 根据 创建时间进行 分组,之后 再进行关联 查询,就出来了 结果。

执行性能

96342afe6321fb50117c3a0ab094e033.png

那为什么 之前的SQL一直在执行呢?

可以我有另一个 与其相似的SQL是可以出来结果的, 只是 也执行了 20s ,非常耗时。

数据量 比较小,估计mysql 穷尽了所有数据吧,不然怎么这么慢?

以下SQL执行了可以出来结果,虽然耗时20S

# 每个组织下包括 同级或者下级的 注册经销商数

select

dt.`time` startDate,

o.brand_id as brandId,

o.id AS orgId,

count(orgDealer.id) as totalDealer

from om_organization o

inner join view_om_org_tree ot on ot.parent_id=o.id

left join da_dim_time dt on dt.dim_type="DAY" and dt.`time`>="2018-10-30" and dt.`time` < CURDATE()

INNER JOIN

(

select orge.id,DATE(orge.create_time) as cdate from om_organization orge where 1=1

and orge.org_type="Dealer" and orge.removed=0

) as orgDealer on orgDealer.id= ot.id and orgDealer.cdate<=dt.`time`

where 1=1

and o.removed=0

group by o.id , dt.`time`

f41b8418d01f12c3e00b534202652abd.png

总结

1.  SQL 一定要 更明白,也就是 从语义上说 让 mysql 解析 更容易, 不要搞那些复杂的。容易出现理解偏差的

2.   将要查询的表 和数据 通过部分进行 分组或者过滤  之后成为中间表, 再关联其他表 , 使其 更 简单化。

3. 根据可能是因为 Using join buffer (Block Nested Loop) , 也就是 join的 循环 太多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 查询不出结果_mysql 执行查询SQL 一直执行不出结果 的相关文章

  • 牛顿迭代法解非线性方程组(附C++代码)

    目录 一 公式介绍 二 应用环境 三 C 代码 实例说明 C 编译环境 C 代码 运行结果 特别注意 解决方法 一 公式介绍 牛顿迭代法基本公式 迭代出 面对非线性方程组问题 将上式变形 其中为 注 这里面的不再时代表一个值 而是代表关于变
  • SpringBoot---@DeleteMapping

    DeleteMapping 在编写代码时引用了 DeleteMapping 注解 DeleteMapping value remove courseNo public String remove PathVariable courseNo
  • linux中shell脚本命令使用详解

    文章目录 一 普通用户和超级用户 二 关于系统的操作 三 关于文件操作 3 1 ls显示文件 3 2 cd进出目录 3 3 mkdir创建目录 3 4 touch创建文件 3 5 cp复制命令 3 6 rm删除命令 3 7 cat命令 3
  • 注意力机制:CA - Coordinate Attention for Efficient Mobile Network Design(文末附代码)

    注意力机制 CA Coordinate Attention for Efficient Mobile Network Design 摘要 引言 具体而言 优势 相关工作 Mobile Network 架构 注意力机制 Coordinate
  • java 正则表达式 检测数学公式是否正确_java 正则表达式 检测数学公式是否正

    java 正则表达式 检测数学公式是否正 2021 02 05 13 33 36 简介 java中正则表达式基本用法的使用 1 Test01 java 使用正则表达式使代码变得非常简洁 2 TestMatcher01 java Matche
  • IBM近期扩充Watson认知API服务

    本文转载至 http www infoq com cn news 2016 03 watson cognitive apis 近期 IBM对Watson认知API服务进行了扩充 新增了情绪和语调分析API的测试版本 Watson的情绪分析A
  • Flutter 组件抽取:验证码输入功能(CodeInputContainer)

    简介 验证码输入框 可选需要输入的验证码个数 输入达指定个数后自动回调 效果 范例 class TestPageState extends State
  • 【通信原理】七、数字带通传输系统

    文章目录 一 2ASK振幅键控 2ASK振幅键控原理 2ASK包络检波 2ASK相干解调法 二 2FSK频移键控 过零点检测解调法 三 2PSK相移键控 四 2DPSK差分相移键控 差分相干解调 相位比较法 五 已调信号功率谱密度 六 抗噪
  • VB.Net正则表达式大全(3)

    深入浅出之正则表达式 注 JanGoyvaerts为RegexBuddy写的教程的译文 前言 半年前我对正则表达式产生了兴趣 在网上查找过不少资料 看过不少的教程 最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好 可
  • IDEA插件之输入法自动切换【Smart Input Source】

    MAC系统推荐快捷键 针对输入切换无需快捷键 但是在某些场景下比如Git Diff的时候可能存在自动跳转到源文件的情况 这种时候需要手动关闭自动切换功能 给作者提了个建议对这种场景进行优化 建议使用的快捷键 C代表关闭 O代表打开 介绍 解
  • 量子云计算:实现自我验证!

    量子云计算 实现自我验证 背景 即使对于世界上最强大的经典计算机来说 有些极度复杂的计算仍然需要花费漫长的时间 可是 从理论上说 量子计算机却可以完全胜任非常复杂的计算任务 原因是 不同于经典计算机的比特位 量子计算机拥有 量子位 经典二进
  • 人工智能讲师专家老师叶梓人工智能讲师之机器学习与深度学习-34

    接上一篇 系列博文 人工智能讲师叶梓关于人机器学习与深度学习入门课程课件 为系列博文 更多课程 及老师资料可点击 个人主页 最小二乘法的示意图 R语言实现的一元线性回归 一元回归的PYTHON实现 IMPORT PANDAS AS PD f
  • 前端实现csv文件的解析预览、上传、下载

    最近遇到了一些关于csv文件的上传 下载 解析预览 删除的需求 因为之前没有做过 尤其是关于csv的解析并预览 于是记录一下 上传 关于上传 绝大部分的选择都是通过第三方的OSS进行存储 比如阿里云的 这个其实没什么难度 有文档可以看 对于
  • ServiceLoader SPI的简单认知

    写了这么长时间的代码 竟然没有用过jdk SPI的ServiceLoader 深表遗憾 为什么写这个 因为在看Sentinel配置代码的时候 看到了这个 挺好用的 用法 在jar包中 resources 中建立 META INF servi
  • Java客户端连接不了安装在CentOS7上的redis解决方案

    今天初试了使用Java Redisson 客户端连接安装在CentOS上的redis 发现一直连接不了 报错信息如下 Exception in thread main com lambdaworks redis RedisException
  • HTML教程

    文章目录 HTML 1 HTML 概述 2 第一个 HTML 代码 3 HTML 标签分类 4 HTML基本标签 4 1 结构标签 4 2 排版标签 4 3 块标签和行内标签 4 4 文本标签 已过时 4 5 文本格式标签 4 6 标题标签
  • mybatis TypeHandler详解

    1 TypeHandler概念 TypeHandler 类型转换器 在mybatis中用于实现java类型和JDBC类型的相互转换 mybatis使用prepareStatement来进行参数设置的时候 需要通过typeHandler将传入
  • 简单的LVGL按键例程

    以下是一个简单的LVGL按键例程 使用LVGL的按键事件来处理按钮的单击和长按操作 include lvgl lvgl h void btn click action lv obj t obj 处理按钮单击事件 void btn long
  • ASP.NET -- WebForm -- ScriptManager 类

    ASP NET WebForm ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本 1 注册并立即执行脚本 RegisterStartupScript 方法 例 在ASP NET中实现和

随机推荐

  • 构建Java Web应用实验

    1 创建负责下载WAR文件的镜像 1 创建一个目录fetcher 保存相关的配置信息和内容 在 后输入mkdir fetcher cd fetcher命令 然后按Enter键 创建fetcher目录并进入该目录 示例代码如下 root xi
  • 知识追踪实战:lstm+ Multi-head Attention注意力机制的学生做题成绩预测实战

    项目视频讲解 知识追踪实战 lstm Multi head Attention注意力机制的学生做题成绩预测实战 哔哩哔哩 bilibili from collections import Counter import torch from
  • 小程序蓝牙亲身总结

    问题 1 小程序蓝牙搜索能不能搜到手机设备 2 如何判断蓝牙是否打开 3 搜索指定设备 4 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址 iOS 上则为设备 uuid 因此deviceId不能硬编码到代码中
  • 前端框架 (一)zTree 从数据库中动态加载树形菜单

    这几天做动态菜单用到了这个插件 目前用的很广泛的一个开源框架 最新发布的QUI框架就是用这个插件开发的菜单部分 因此还是很值得深入研究和学习 通过使用感觉功能很丰富 好多函数不用自己开发和编写 官网上有很详尽的API可以参考 用着算顺手但学
  • ASP.NET 与ASP.NET Core区别--概念及特征比对

    随着 NET的发展 NET Core对跨平台支持得越来越好 ASP NET Core能运行在Windows macOS 或 Linux 上 这就意味着ASP NET Core开发的网站 可以在除了Windows之外的平台运行 而且ASP N
  • 每天读一遍,不久你就会变

    在平凡枯燥简单的工作中 做无可取代的人 再烦 也别忘记微笑 再急 也要注意语气 再苦 也别忘坚持 再累 也要爱自己 低调做人 你会一次比一次稳健 高调做事 你会一次比一次优秀 成功的时候不要忘记过去 失败的时候不要忘记还有未来 有望得到的要
  • cadence allegro番外:制作含热风焊盘、反焊盘的过孔

    前言 需要先参考下列文章 padstack editor制作过孔 cadence allegro番外 制作flash焊盘 在以上文章中 已经制作了一个可用于两层板的过孔 但是在多层板中 过孔是需要链接或避让负电层的 因此需要在过孔中添加热风
  • 麒麟v10 curl报错:SSLv3_client_method version OPENSSL_1_1_0 not define

    curl及yum大致错误 usr bin cmake3 relocation error usr lib64 libcurl so 4 symbol SSLv3 client method version OPENSSL 1 1 0 not
  • 【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

    VCC 电源电压 GND 电源供电负电压 通常接地 VDD 模块工作正电压 VSS 模块工作负电压 VREF ADC参考正电压 VREF ADC参考负电压 VBAT 电池或其他电源供电 VDDA 模拟供电正电压 VSSA 模拟供电负电压 一
  • c++11:动态内存与智能指针

    为了更容易 同时也更安全 地使用动态内存 新的标准库提供了两种智能指针 smart pointer 类型来管理动态对象 智能指针的行为类似常规指针 重要的区别是它负责自动释放所指向的对象 新标准库提供的这两种智能指针的区别在于管理底层指针的
  • CV::Mat数据拷贝 memcpy 踩坑

    1 cv mat 初始化 cv Mat img1 h w CV 8UC3 cv Mat img1 h w CV 8UC3 data 一般cv mat 初始化后数据内存 data 段都是连续的 可以用isContinuous 函数判断存储是否
  • Git克隆、拉取最新代码、上传代码到远程仓库

    文章目录 工作区 暂存区 版本库 1 提交代码到仓库 2 pull拉取最新代码 3 克隆 拉取代码 解决冲突 4 git 关联仓库并上传代码 5 关联已有仓库并提交代码 6 git记住某个仓库的账号密码 工作区 暂存区 版本库 工作区 就是
  • sqli-labs靶场Less-15

    1 访问首页 Less 15 index php 这里的传参点是表单中的uname passwd 判断是否是数字形传参 判断是否有单引号闭合 判断是否是双引号闭合 判断是否单引号 括号闭合 判断是否是双引号 括号闭合 如果以上都不适 哪以上
  • type object ‘Path‘ has no attribute ‘home‘

    报错 根据堆栈定位 是matplotlib init py文件里面562行位置报错的问题 讲道理 应该没有问题来着 进入到matplotlib init py文件 然后悬停Path和home 发现 emmm 文件居然不一样 好的 在我尝试更
  • OpenCV缺陷检测

    新手上路 欢迎高手指点 原图 OpenCV缺陷检测代码 An highlighted block include head h int main Mat img imread image 1204 bmp assert im data if
  • python是面向对象还是面向过程的

    Python虽然是解释型语言 但从设计之初就已经是一门面向对象的语言 对于Python来说一切皆为对象 正因为如此 在Python中创建一个类和对象是很容易的 当然如果习惯面向过程或者函数的写法也是可以的 Python并不做硬性的限制 Py
  • python连接sqlsever_使用Python连接到Microsoft SQL Server

    我试图通过python连接到SQL以在Microsoft SQL服务器上的某些SQL数据库上运行一些查询 从我的在线研究和在这个论坛上 最有前途的图书馆似乎是pyodbc 所以我做了以下代码 import pyodbc conn pyodb
  • 【C#学习笔记】Hello World

    using System namespace ConsoleApplication class Program static void Main string args Console Write Hello World Console R
  • Class.forName()用法详解

    一 CLASS类概念 Class也是一个Java类 保存的是与之对应Java类的meta信息 元信息 用来描述这个类的结构 比如描述一个类有哪些成员 有哪些方法等 一般在反射中使用 详细解释 Java 源程序 java 文件 在经过 Jav
  • mysql 查询不出结果_mysql 执行查询SQL 一直执行不出结果

    今天执行一个mysql 语句 一直在 执行 执行了5分钟了 还是没有出来结果 每个组织下包括 同级或者下级的 注册店铺数 查询 历史每一天的每个组织下的当天存在的门店数 select dt time startDate o brand id