union all 效率问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了union all 效率问题相关的知识,希望对你有一定的参考价值。
四个结构一样的sql分开执行速度都很快(5秒内),但是把四个sql语句union all在一起执行速度很慢(300秒左右)请根据以上情况分析分析原因。
“sql分开执行”是指用 select * 这种查
字段50多个,表的数据量大
如果是的话,那么这种查询都需要5秒的话,说明这个表的数量级已经是非常大了,如果排除列不是那种超多的情况的话并且排除计算机配置等其它外因的话,那表的记录数应该至少应该是个百万级吧。
百万级的数据表之间用全连接查询,全连接要匹配所有的字段,每个列的每个字段都会被取出来判断,就算每个表只有一列的话,那记录对应判断的逻辑操作就是百万级的百万级,然后再四表连查,效率自然会非常非常低了。
嗯,那应该就对了,难怪查询耗费那么多时间。 参考技术B 占用缓存的问题吧,你可以试图将4个SQL分别插入一张表,然后再从这张表查出数据来,应该就很快了本回答被提问者采纳
sql中,只使用union和先union all再distinct,两种方式哪个效率高?
sql中,只使用union和先union all再distinct,两种方式哪个效率高?
distinct通常不建议使用,效率较低;union all 和union 而言,union all效率更高;原因是:union 相当于多表查询出的数据进行去重然后再进行排序后返回,而union all是多表查询合并去重后就直接返回 参考技术A Distinct可以说是数据查询中最耗时最耗性能的操作了,去重统计是数据查询不可言说的痛,所以不到万不得已不要用,另外,union all 后在distinct的效率如果更高的话,那union存在的意义是什么?所以可想而知,union的效率更高啊 参考技术B 在大数据量的情况下distinct + union all 性能大于 UNION 的性能以上是关于union all 效率问题的主要内容,如果未能解决你的问题,请参考以下文章
sql union和union all的用法及效率 以及与join的区别