需求比较简单,送分题:
有5帐表t_main、t_msg、t_desc、t_evt、t_mas;
t_main是实际数据表,数据量在20万左右,其他几个是信息表,数据量400左右;需要联合5帐表创建一个试图,试图最终效果是,希望看到各种实现方式,以及性能优劣:
pk_id message description event manager update

表名:t_main
pk_id msgid descid evtid masid update
主键 表名:t_msg
msgid message
主键 消息内容 表名:t_desc
descid description
主键 表名:t_evt
evtid event
主键 表名:t_mas
masid manager
主键

解决方案 »

  1.   

    create or replace view t_vw as
      select pk_id, message, description, event, manager from 
        t_main left join t_msg on t_main.msgid=t_msg.msgid
               left join t_desc on t_main.descid=t_desc.descid
               left join t_evt on t_main.evtid=t_evt.evtid
               left join t_mas on t_main.masid=t_mas.masid;
      

  2.   

    楼上的可能会有点小问题,我做点小修改:
    create or replace view t_vw as
      select pk_id, message, description, event, manager 
      from t_main t
      left join t_msg a  on t.msgid=a.msgid
      left join t_desc b on t.descid=b.descid
      left join t_evt c  on t.evtid=c.evtid
      left join t_mas d  on t.masid=d.masid;
      
      --如果直接使用t_mas.masid(表名.列,可能会出现重复数据,或是根本就执行不了)
      

  3.   

    更正一下,select 的列表前最好加上表名:
    create or replace view t_vw as
      select t.pk_id, a.message, b.description, c.event, d.manager,t.update
      from t_main t
      left join t_msg a  on t.msgid=a.msgid
      left join t_desc b on t.descid=b.descid
      left join t_evt c  on t.evtid=c.evtid
      left join t_mas d  on t.masid=d.masid;
      
      --如果直接使用t_mas.masid(表名.列,可能会出现重复数据,或是根本就执行不了)