SELECT a.userid,manageid, username, aname,tel,addtype,a.biaoshi as biaoshi,firstchange,lastchange,
lastyuer,shou,zhao,jiao,yuer, huobi,beizhu,sure,suredate,a.ctrl as ctrl from users left join manage a 
on users.userid=a.userid where firstchange in (select top 1 firstchange from manage where userid = 
a.userid and a.huobi = huobi and live='normal'and power=3 order by firstchange desc) order by cast(a.biaoshi as int),
username,a.huobi asc
主要是慢在where firstchange in这里.  大家有什么建议帮忙优化一下

解决方案 »

  1.   

    可以考虑用exist代替in,在firstchange 建立索引!
      

  2.   


    SELECT a.userid,manageid, username, aname,tel,addtype,a.biaoshi as biaoshi,firstchange,lastchange,
    lastyuer,shou,zhao,jiao,yuer, huobi,beizhu,sure,suredate,a.ctrl as ctrl 
    from users left join (Select a.*
    From manage a Right Join (Select userid,huobi,Max(firstchange) As firstchange From manage 
            Where live='normal'and power=3 Group By userid,huobi) T
    On (userid = a.userid and a.huobi = huobi ))
    order by cast(a.biaoshi as int),username,a.huobi asc