MySQL 大数量left join 太慢语句拆分的一种办法

最近做点股市分析,发现日线数据已经达到了千万级,想做个两个日期之间的收盘价比较,例如第一周1月3日和1月6日的涨幅,很简单的语句,如下:

select a.scode,'s.' name,a.sdate sdate1,a.close close1,
b.sdate sdate2 , b.close close2,
case when ifnull(a.close,0)>0 then  b.close/a.close else 0 end 涨幅 
from (select *  from t_bar1 where  sdate='2023-01-03') a  
left join (select *  from  t_bar1 where sdate='2023-01-06') b on a.scode = b.scode    

t_bar1 对 sCode(股票代码)、sDate(交易日期)都做了索引,语句解释看上去很理想。但运行起来十分慢,运行10多分钟还不出结果。
语句解释

再检查子查询,速度十分快,几毫秒的事情。

(select *  from t_bar1 where  sdate='2023-01-03')
(select *  from  t_bar1 where sdate='2023-01-06') 

百思不得其解,不知道有没有大神可以解释一下?

后来用了取巧的方式,拆分为多个语句如下:

drop table IF EXISTS temp_bar1;

create  table  temp_bar1 AS 
select scode,sdate sdate1 , close close1 from t_bar1 
where sdate='2023-01-03';

ALTER TABLE temp_bar1 
 ADD INDEX scode(scode);

drop table if EXISTS temp_bar2;

create  table  temp_bar2 AS 
select scode,sdate sdate2 , close close2 from t_bar1 
where sdate='2023-12-22';

ALTER TABLE temp_bar2
 ADD INDEX scode(scode) ;

select a.scode,s.name,a.sdate1,a.close1,
b.sdate2 , b.close2,
case when ifnull(a.close1,0)>0 then  b.close2/a.close1 else 0 end 涨幅 
from temp_bar1  a  
left join  temp_bar2  b on a.scode = b.scode   ;

如此办法,运行居然取得了意想不到的效果,不到1秒就完成了。

相关推荐

  1. SQL查询数据过多

    2023-12-25 08:42:02       17 阅读
  2. 每日练:LeeCode-561、 数组数组+排序】

    2023-12-25 08:42:02       18 阅读

最近更新

  1. 如何在vue3中实现动态路由

    2023-12-25 08:42:02       0 阅读
  2. 使用RAGAs评估基于Milvus Cloud的RAG应用

    2023-12-25 08:42:02       0 阅读
  3. electron通信与持久化存储

    2023-12-25 08:42:02       1 阅读
  4. Electron Forge 打包更改打包后图片

    2023-12-25 08:42:02       1 阅读
  5. 【ES】--Elasticsearch的高亮模式

    2023-12-25 08:42:02       1 阅读
  6. JVM专题九:JVM分代知识点梳理

    2023-12-25 08:42:02       1 阅读
  7. 谈谈检测浏览器类型

    2023-12-25 08:42:02       1 阅读
  8. npm 常用命令详解与实践

    2023-12-25 08:42:02       1 阅读

热门阅读

  1. 4-Docker命令之docker logs

    2023-12-25 08:42:02       39 阅读
  2. Hive01_安装部署

    2023-12-25 08:42:02       34 阅读
  3. 介绍 TensorFlow 的基本概念和使用场景。

    2023-12-25 08:42:02       42 阅读
  4. uniapp三元表达式判断状态更改字体颜色?

    2023-12-25 08:42:02       32 阅读
  5. RISC-V搭建嵌入式QT开发环境

    2023-12-25 08:42:02       31 阅读
  6. 栈与队列part02 开心消消乐

    2023-12-25 08:42:02       37 阅读