日期:2014-05-18  浏览次数:20511 次

高手给我指点下这几条语句如何优化?(关于复合查询)
网上找资料SQL语句优化方法,说复合查询比关联查询快一些,昨天听公司培训的讲师也这么说,于是想把程序改一改。但碰到一些问题,在这里希望得到一些指点经验。    
 
 
select     Top     1     a.Title,a.GroupID,a.Content,a.addtime,a.UserID,b.Name,b.FaceURL,b.Address     from     topicTable     a,[User]     b     where     a.id=@TopicID     and     a.topicID=0     and     b.id=a.UserID    
 
上面这样的两表关联查询,要输出的字段关系到两个表,能有什么更好的查询方法吗?    
 
那么3表关联查询的呢??
SELECT   TOP   6   id,   GroupPic,   GroupName,   UserCount
FROM   GroupTable
WHERE   (id   IN
                    (SELECT   GroupID
                  FROM   GroupUser
                  WHERE   UserID   IN
                                      (SELECT   UserID
                                    FROM   GroupUser
                                    WHERE   GroupID   =   7   group   by   UserID)
                  GROUP   BY   GroupID))
ORDER   BY   id   DESC

------解决方案--------------------
select t.Title,t.GroupID,t.Content,t.addtime,t.UserID,b.Name,b.FaceURL,b.Address from [User] b,
(select Title,GroupID,Content,addtime,UserID from topicTable where id=@TopicID and a.topicID=0) as t
where b.id = t.UserID
这样试一下吧

第二个查询中的两个字查询为什么要加上GroupID,感觉没有必要。