SQL Server 性能查询
Posted
技术标签:
【中文标题】SQL Server 性能查询【英文标题】:SQL Server Performance Query 【发布时间】:2014-08-27 07:37:01 【问题描述】:我对这个查询(视图)有些问题。
我使用的是 SQL Server 2012。 记录很少,查询很快,但之后我只添加了 1000 条记录(链接),它变得非常慢(超过 23 秒)
我必须为数据库中的每个主机获取一个随机链接,所以我使用了 Row_Number 和分区。
links 表有 1000 条记录,host 表有 10 条记录,但是查询很慢
对提高性能有什么建议吗?
更新我需要为每个主机获取一个随机链接(可能是 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
【问题讨论】:
上下文不足。 查询下也有一个图表屏幕。顺便说一句,我更新了问题 【参考方案1】:我修复了问题...同一张表上的双重连接是错误的OFC,它会减慢查询速度!
Referers referer ON referer.codHost = host.uidHost JOIN
Referers referer2 ON referer.codUser = [user].uidUser
删除无用的加入很快!
【讨论】:
以上是关于SQL Server 性能查询的主要内容,如果未能解决你的问题,请参考以下文章