第一个问题:
如果你涉及到的两个表的数据可以用union 来连接的话
那么
select ... from a where...
union
select ... from b where...

select ... from 
表a union all 表b)
where只是写法不同,效率因该是一样的下面这个没有看懂你想做什么

解决方案 »

  1.   

    谢谢楼上的各位的关注:
    1:
    select ... from a where...
    union
    select ... from b where...(是表A和表B的所有数据进行链接)。用
    select ... from 
    (表a union all 表b)
    where.....
    这里的表A和表B的数据可以是筛选以后的。所以,相对来说,后者的数据量比前者的少。二:
    使用存储过程,比较灵活地尽可能少的数据进行union的操作,但是它的缺点是在这动态查询的时候需要对即将运行的T-SQL语句进行一下编译,然后再运行,也就是说,SQL编译即将运行的T-SQL语句快还是对数据进行Union的操作快,我想,在不同的情况下两者是有区别的,毕竟那是数据量的问题,数据量多,我觉得是用存储过程进行动态搜索然后把结果进行Union比用所有数据进行Union以后再条件筛选会快吧?
      

  2.   

    10、20万左右用union来做,所花时间应当还可以理解
    如果是几百万、几千万,最好是做另外的静态统计表,每周、每月的更新一次,报表查询则直接从静态统计表里面取数据