2014-08-27 157 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)它快!