2014-08-27 144 views
0

嗨我有这个查询(查看)一些麻烦。SQL Server性能查询

我使用的是SQL Server 2012的 少数记录的查询速度快,但在那之后我只添加1000条记录(链接),它变得很慢(超过23秒),

我不得不采取随机链接为数据库中的每个主机,所以我使用Row_Number和分区。

链接表有1000个记录和主机表中有10记录,但查询是如此缓慢

有什么建议增加演出内容吗?

UPDATE我需要的foreach主机随机链接(可能是1或2或3取决于Host.numLinksPerWork)

;WITH MyCte As 
( 
SELECT DISTINCT link.namUrl, host.uidHost, host.namHost AS Hostname, 
[user].uidUser, usrProfile.UserName AS Username, host.numLinksPerWork, 
referer.namUrl AS refererLink,host.Min, host.Max,ROW_NUMBER() 
OVER (PARTITION BY host.numLinksPerWork, host.uidHost ORDER BY newid()) AS Number 
FROM Links link JOIN 
Users[user] ON [user].uidUser = link.codUser JOIN 
Profile usrProfile ON usrProfile.UserId = [user].uidUser JOIN 
Hosts host ON host.uidHost = link.codHost JOIN 
Referers referer ON referer.codHost = host.uidHost JOIN 
Referers referer2 ON referer.codUser = [user].uidUser 
WHERE [user].flgBanned = 0 
) 

SELECT MyCte.uidHost, MyCte.uidUser, MyCte.namUrl, MyCte.refererLink, 
MyCte.Hostname, MyCte.Username, MyCte.Min, MyCte.Max FROM MyCte 
WHERE MyCte.Number <= MyCte.numLinksPerWork! 

Similar Diagram

+0

上下文不足。 – 2014-08-27 07:38:22

+0

在查询下面也有一个图表屏幕。顺便说一句,我更新了这个问题 – user1107078 2014-08-27 07:42:33

回答

0

我固定的问题...的双重加入同一张表,这是错误的OFC,它减慢了查询!

Referers referer ON referer.codHost = host.uidHost JOIN 
Referers referer2 ON referer.codUser = [user].uidUser 

删除无用加入(s)它快!