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 性能查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 性能查询

SQL Server 中的查询性能

大型sql server查询性能优化

Sql Server 查询性能

WHERE 子句中的 OR 会降低 sql 查询性能(sql server)

SQL Server 查询性能优化——创建索引原则