mysql union性能变差和一个方案

编程入门 行业动态 更新时间:2024-10-09 09:22:08

mysql union<a href=https://www.elefans.com/category/jswz/34/1771266.html style=性能变差和一个方案"/>

mysql union性能变差和一个方案

前几天,搞了一个140M大小的表格,装在本机上。主键没定义,但是默认是INDOOB,肯定是有主索引的。

有一个业务逻辑,想要查两个表(比如把男生一个表,女生一个表,查询班里的学生)
由于mysql不支持outer join,只能用unoin。

然后查询(请原谅我喜欢给表起名t1):

select * from t1;

速度很快。0.4秒。

然后我用了union命令。

select * from t1
union
select * from t1;

2秒。

由于我使用的是dbeaver,所以默认是有limit 200的(dbeaver是真的NP)。当执行读取全数据的时候,直接卡死。

然后上网一查:union要进行一次去重的操作。

我这个表大概50W条数据,而且不重复。所以系统每插入一条数据,就要走全表查一次索引,50W条数据就要查50W次,当然卡死。

提出建议:使用union all。这样就不会走去重的逻辑了。

测试:问题解决。

但是重复数据咋办?????
这个东西似乎只能在建表的时候确定。比如一个男生表一个女生表,直接union all和union结果没有任何问题。但是如果有重复数据……
我想了想,去重不就得走全表索引吗……要是真的这样的话,应该去找DBA了

更多推荐

mysql union性能变差和一个方案

本文发布于:2024-02-14 00:42:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761175.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:性能   方案   mysql   union

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!