Подтвердить что ты не робот

Sql работает быстро в ssms медленно в asp.net

У меня эта проблема уже пару недель. Проблема заключается в том, что запрос занимает 4-5 минут для запуска на веб-сайте и не более 2 или 3 секунд для запуска в ssms. Также я обнаружил, что после того, как я внес изменения в этот запрос, например, добавив переменную customerId, он начнет быстро запускаться на веб-странице, но к следующему дню он будет медленным снова. Этот вопрос относится к этому вопросу:

DECLARE @customerID INT
SET @customerID = @CustID
DECLARE @MyTable table(
Iden int NOT NULL IDENTITY(1,1),
ProductID int)

INSERT INTO @MyTable(ProductID)
SELECT P.ProductID FROM Product P WITH (NOLOCK)
left join Compunix_ProductMMY cpmmy with (nolock) on p.ProductID = cpmmy.ProductID
left join Compunix_CustomerMMY ccmmy with (nolock) on ccmmy.mmyid = cpmmy.mmyid
WHERE P.Deleted=0 AND P.Published=1 and (ccmmy.customerid = @customerID OR cpmmy.productid IS NULL)

SELECT c.Name, c.SeName, c.CategoryID
FROM Category c WITH (NOLOCK) 
JOIN ProductCategory PC With (NOLOCK) ON C.CategoryID = PC.CategoryID
JOIN @MyTable MT ON PC.ProductID=MT.ProductID
WHERE C.Published = 1
GROUP BY c.Name, c.SeName, c.CategoryID
ORDER BY c.Name

У меня тот же запрос выполняется на другом сайте, который работает отлично. Единственная разница между сайтами заключается в том, что они запускаются в разных базах данных, а на медленном сайте более чем вдвое больше продуктов (54000 продуктов) по сравнению с другими. Все три сайта и их базы данных размещены на одной машине.

4b9b3361

Ответ 1

Скорее всего, вы попадаете на проблему с параметром sniffing.

Я предлагаю прочитать Медленное приложение, быстро в SSMS? от Erland Sommarskog, чтобы получить полное представление о проблеме (длинная статья, но очень хорошая).

Ответ 2

Взгляните на sys.dm_exec_sessions для вашего приложения ASP.Net и для сеанса SSMS. Я буду опасаться, что по крайней мере один из ваших настроек SET отличается. Это может способствовать различным планам (в конечном итоге это объясняется параметризацией), а сторона приложения обычно заканчивается хуже.

См. другие вопросы для получения более подробной информации:

Сохраненная процедура медленна при вызове из Интернета, быстро из Management Studio

Выполняется процедура из ADO.NET, но не в SSMS

Время выполнения запроса при выполнении из Интернета, но сверхбыстро, когда выполняется из SSMS

ADO.NET против SQL Server Management Studio - ADO хуже работает

Ответ 3

Для чего это стоит, очень часто мы сталкиваемся с одной и той же проблемой; может быть один раз в год. Вы можете хорошо прочитать неделю и переварить все эти замечательные ресурсы, упомянутые в других ответах, или вы можете делать то, что мы делаем; остановить и запустить SQL Server.

Это работает.

Мы заметили, что эта проблема обычно возникает после различных схем схемы /sp/view, которые не могут быть непосредственно связаны с проблемой.