create or replace view user_manager as
select t.userid,
       t.nick,
       (select s.username from account s where s.userid = t.userid) realname,
       t.mobile,
       t.email,
       t.adddate,
       t.agent,
       t.lastlogin,
       (select b.agent_name from agentinfo b where b.id = t.agent) name,
       (select max(s.orderdate) from ticketorder s where s.userid=t.userid)lastvote
  from userinfo t;
现在用起来很慢很慢 不知道如何优化

解决方案 »

  1.   

    从语法看,楼主的语句貌似是oracle的?
      

  2.   

    试试create  view user_manager as 
    select t.userid, 
          t.nick, 
      s.username as realname, 
          t.mobile, 
          t.email, 
          t.adddate, 
          t.agent, 
          t.lastlogin, 
          b.agent_name as name, 
           max(s.orderdate) as lastvote 
      from userinfo t left join ticketorder s on s.userid=t.userid 
                      left join agentinfo b  on b.id = t.agent
                      left join account k on k.userid = t.userid
      group by t.userid, 
          t.nick, 
      s.username , 
          t.mobile, 
          t.email, 
          t.adddate, 
          t.agent, 
          t.lastlogin, 
          b.agent_name 
      

  3.   

    换成LEFT JION 也不行  觉得也慢!
      

  4.   

    那个create or replace 看不懂额 
    难道真不是MSSQL
      

  5.   

    ticketorder 和userinfo 数据量分别多少?
      

  6.   

    ticketorder 的userid 字段有无索引,估计这最关键
      

  7.   

    select t.userid, 
          t.nick, 
           s.username AS realname, 
          t.mobile, 
          t.email, 
          t.adddate, 
          t.agent, 
          t.lastlogin, 
          b.agent_name AS  name, 
          T1.orderdate AS  lastvote 
      from userinfo t,account S ,
    (select max(s.orderdate)AS  , userid from ticketorder s GROUP BY userid)AS T1,agentinfo B 
    WHERE T.userid = S.userid  AND T1.userid=T.userid AND T.agent=B.ID
      

  8.   

    ticketorder 和userinfo 数据量分别多少? 4万左右
      

  9.   

    select t.userid, t.nick, t.mobile, t.email, t.adddate, t.agent, t.lastlogin, 
           A.UserName,I.Agent_Name,O.OrderDate as LastVote
      from userinfo t Left Join Account A On T.UserID=A.UserID
           Left Join AgentInfo I On T.Agent=I.ID
           Left Join (Select UserID,Max(OrderDate) as OrderDate From TicketOrder Group By UserID) O On T.UserID=O.UserID**SQL Server语法,估计Oracle兼容
    在TicketOrder上建个索引:UserID,OrderDate