我现在有一个非常复杂的多表查询并且分组统计的操作,每次运算量都比较大,费时很久,怎么能把查询出来的结果保存起来,下次直接调用?是存到一个表中还是用其他什么别的方法?谢谢大家。

解决方案 »

  1.   

    创建物化视图啊,
    create materialized view mv_hotel_resv
    refresh fast
    enable query rewrite
    as
    select distinct city, resv_id, cust_name
    from hotels h, reservations r 
    where r.hotel_id = h.hotel_id';
      

  2.   

    create table 表名 as select .....
    select .....是你的查询语句
      

  3.   

    利用游标啊
    DECLARE 
     v_x VARCHAR2(10);
     v_y VARCHAR2(10);
     CURSOR cur IS
      SELECT x,y
      INTO v_x,v_y
      FROM xy,..
      WHERE ...
    BEGIN
      --直接使用v_x,v_y
    END;
      

  4.   

    你的表种数据不会变吗?要变的话这么着都没有,还是的优化sql语句,要是不变的话那就建个表放结果好了
      

  5.   


    正解,最简单的方式。随便提一下,也可以 insert into table select * from xx
      

  6.   

    如果没有table 可以
    create table tabname as
    select xx from xxx 
      

  7.   

    如果是批处理,月统计的话,create table *** as select * from XX,是一个比较合适的方式
      

  8.   

    建立一个可更新的物化视图就可以了. 数据仓库的一贯做法. 建立的好, 使用物化视图的查询重写可以使你的语句, 特别是count, group by 这种语句效率大大提升