简体   繁体   English

SQL Server性能查询

[英]SQL Server Performance Query

I have some troubles with this query (view). 我对此查询有一些麻烦(查看)。

I'm using SQL Server 2012. With few Record the query is fast but after that I add only 1000 records (Links) it becomes very slow (over 23 seconds) 我使用的是SQL Server2012。记录很少,查询速度很快,但是此后,我仅添加了1000条记录(链接),查询速度变得非常慢(超过23秒)

I have to take a random Link for every host in database,so I used Row_Number and partition by. 我必须为数据库中的每个主机获取一个随机链接,因此我使用了Row_Number和partition by。

Links table has 1000 records and host table has 10 record but the query is so slow 链接表有1000条记录,主机表有10条记录,但是查询是如此缓慢

Any advice for increase performance? 对提高性能有什么建议吗?

UPDATE I need to get foreach Host a Random Link (could be 1 or 2 or 3 depends on Host.numLinksPerWork) 更新我需要让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 类似图

I Fixed the problem... The double join on the same table which is wrong OFC ,It slowed down the query! 我解决了问题...在同一张表上的两次联接是错误的OFC,它减慢了查询速度!

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

removing useless Join(s) it's fast! 删除无用的Join很快!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM