有这样一张报表,三张表a、b、c结构相同需要 ,三表需要union操作,其中每张表都有一些查询限定条件,然后三张表union完了以后,还需要与其他代码表作联合查询一遍显示中文内容,请问我是把union以及同代码表的联合查询做成视图然后在需要时加查询条件好呢还是做成带参数的存储过程好?

解决方案 »

  1.   

    做成view会方便些.
    效率方面,如果语句不很复杂,也差不多.
      

  2.   

    复杂的语句,使用procedure才突显优势,因为数据库服务事先为能为你要执行的sql编译好.
      

  3.   

    建议写成过程,这样的效率更高一点,
    表中的数据多的时候,这样子的查询优势就能显示出来,
    毕竟在oracle中过程比试图的效率高,
    如果不太复杂而且数据量少,那么就用视图,方便简洁
      

  4.   

    with x as (
      select * from a
    union all
      select * from b
    union all
      select * from c
    )
    select *
      from x, d
     where ...