用事件查看器查看了执行效率
发现这句话占用cpu特别多!有时飙到500多!
准备放到视图里面去,可是视图里又不能传参数。
大家对这句sql有什么优化的地方呢?
大家帮帮忙select top 4 cu.UserBBName,cu.UserPhoto,cu.UserVotes,(select e.us from (select a.userid,count(b.userid)+1 us from cm_users_tbl a left join cm_users_tbl b on a.uservotes<b.uservotes group by a.userid)  e inner join cm_users_tbl  d on e.userid=d.userid where d.userid=cu.UserID) as rank,gender=case cmu.gender when 1 then '男' else '女' end, Convert(varchar(20),datediff(Month,Birthday,getdate())/12) +'岁'+ Convert(varchar(20),datediff(Month,Birthday,getdate())%12) + '个月' as age,cv.UserId,convert(varchar(5),VisitAddtime,110)+' '+convert(varchar(5),VisitAddtime,114) as VisitAddtime,VisitUserName,VisitUserId,VisitPhoto from CM_Visitors_Tbl cv inner join cm_userinfo_tbl cmu on cmu.userid=cv.VisitUserId  inner join cm_users_tbl cu on cu.userid=cv.VisitUserId where  cv.UserID=1972 order by VisitAddtime desc

解决方案 »

  1.   


    select top 4 cu.UserBBName,cu.UserPhoto,cu.UserVotes,(select e.us from (select 
    a.userid,count(b.userid)+1 us from cm_users_tbl a left join cm_users_tbl b on 
    a.uservotes<b.uservotes group by a.userid)  e inner join cm_users_tbl  d on 
    e.userid=d.userid where d.userid=cu.UserID) as rank,gender=case cmu.gender when 1 
    then '男' else '女' end, Convert(varchar(20),datediff(Month,Birthday,getdate())/12) 
    +'岁'+ Convert(varchar(20),datediff(Month,Birthday,getdate())%12) + '个月' as 
    age,cv.UserId,convert(varchar(5),VisitAddtime,110)+' '+convert(varchar
    (5),VisitAddtime,114) as VisitAddtime,VisitUserName,VisitUserId,VisitPhoto from 
    CM_Visitors_Tbl cv inner join cm_userinfo_tbl cmu on cmu.userid=cv.VisitUserId  
    inner join cm_users_tbl cu on cu.userid=cv.VisitUserId where  cv.UserID=1972 order 
    by VisitAddtime desc
    换行一下比较容易看!
      

  2.   

    可能发生死锁不?
    加上Nolock试试
      

  3.   

    谁写的烂sql?select结果字段还要嵌入(而且还要再在from中再嵌入)复杂的select?!先把作者辞掉,然后重写这段代码,用简洁清晰的sql来写,甚至可以用多条语句、用中间临时表。简单清晰,才有人工讨论和真正优化的余地!
      

  4.   

    我一看,觉得也不应该写那么长的sql语句,顶6楼的,一条一句分多条写纠正一些,视图也可以传参数。
      

  5.   

    估计到sql板块也难有答案!
    请楼主试试!给个回信!谢谢!
      

  6.   

    http://topic.csdn.net/u/20101016/14/5cd726e5-98d5-43b4-8b22-3a657f69e4b4.html