sql中有个union all ,一提到它,第一反正都是它的效率差,但是是因为啥呢?
union all 是将查出来的结果合并起来,如果单纯只是2张表的查询合并,那效率就等同于查两张表各自查询所需要的时间相加,因为合并这个动作没有涉及到计算
如果使用union all 之后使用了order by,limit等操作,(排序)其实是涉及到了大量的运算,所以会存在效率问题,而且是将合并起来的所有数据进行排序
如果合并后的数据量很大,排序字段又没有索引(准确的讲是使用不到索引,因为即使排序字段有索引,不在where条件中的话,也不会被使用到)的话,就会存在很大的效率问题,这里的效率问题其实就是由大量数据排序引起的,跟union all其实没有本质关系