MySQL可怕的笛卡尔积

以前总说笛卡尔积会引起数据膨胀,都没当回事,当你遇见的时候,才知道它有多可怕,还好服务器没有被我跑挂掉;

mysql的查询语句如下:

select
a.id,b.cid
from a 
inner join b on a.user_name=b.user_name and  b.registerdate='2021-01-24'
where a.registerdate='2021-01-24'

写了一个存储过程,按照用户的注册日期去一天一天的追加历史数据,a表和b表的的关联字段,注册日期字段,都加了索引,sql的explain堪称完美;

这一天的数据量就12万左右,按照以往的经验,最多两秒就出结果了,但是存储过程循环到这一天的时候卡了五分钟也没有查询出来,发现情况不对,当然是立马kill掉,去count了一下数据有10多亿,我的天怎么想都不可能,一去看那天的数据,发现了猫腻,原来那天,user_name字段几乎全是空字符串,上网一百度才知道,原来空字符串join会引起传说中的笛卡尔积,还好看着追历史数据,不是服务器跑挂了都不知道。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值