sql语句or与union all的执行效率哪个更高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句or与union all的执行效率哪个更高相关的知识,希望对你有一定的参考价值。

参考技术A 这么写比较好,

SQL code

select * from table where table_column in(1,2)本回答被提问者采纳

union all 效率问题

四个结构一样的sql分开执行速度都很快(5秒内),但是把四个sql语句union all在一起执行速度很慢(300秒左右)请根据以上情况分析分析原因。
“sql分开执行”是指用 select * 这种查
字段50多个,表的数据量大

参考技术A 你说的是“sql分开执行”是指用 select * 这种查吗?
如果是的话,那么这种查询都需要5秒的话,说明这个表的数量级已经是非常大了,如果排除列不是那种超多的情况的话并且排除计算机配置等其它外因的话,那表的记录数应该至少应该是个百万级吧。
百万级的数据表之间用全连接查询,全连接要匹配所有的字段,每个列的每个字段都会被取出来判断,就算每个表只有一列的话,那记录对应判断的逻辑操作就是百万级的百万级,然后再四表连查,效率自然会非常非常低了。

嗯,那应该就对了,难怪查询耗费那么多时间。
参考技术B 占用缓存的问题吧,你可以试图将4个SQL分别插入一张表,然后再从这张表查出数据来,应该就很快了本回答被提问者采纳

以上是关于sql语句or与union all的执行效率哪个更高的主要内容,如果未能解决你的问题,请参考以下文章

( 转 ) mysql 实战 orin与union all 的查询效率

sql中,只使用union和先union all再distinct,两种方式哪个效率高?

SQL语句中:UNION与UNION ALL的区别

SQL语句中:UNION与UNION ALL的区别

or和union区别

mysql中union与union all的区别