2014-08-27 5 views
0

Привет, У меня есть некоторые проблемы с этим запросом (view).SQL Server Perfomance Query

Я использую SQL Server 2012. с несколькими Record запрос быстро, но после этого я добавляю только 1000 записей (Links) становится очень медленным (более 23 секунд)

Я должен принять случайное Ссылка для каждого хоста в базе данных, поэтому я использовал Row_Number и разделил. Таблица

Ссылки имеет 1000 записей и таблица хостов имеет 10 записи, но запрос настолько медленно

Любые советы для повышения Perfomance?

UPDATE мне нужно получить Еогеасп Хост Random Link (может быть 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

недостаточный контекст. –

+0

есть экран диаграммы тоже по запросу. Кстати, я обновляю вопрос – user1107078

ответ

0

Я Исправлена ​​проблема ... The двойное соединение в той же таблице, которая является неправильной OFC, она замедлила запрос!

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

удаление бесполезных входов (ий) быстро!