Со вчерашнего дня я сталкиваюсь с проблемой: когда я вызываю хранимый процесс из c #, он длится> 5, но когда я выполняю его напрямую из SSMS (на сервере), он длится менее 30 секунд.
Я искал на форумах и прошел через эту замечательную статью http://www.sommarskog.se/query-plan-mysteries.html, но безрезультатно.
Скрипт, содержащийся в моем процессе, извлекает 10 столбцов, среди которых столбец под названием "статья"типа nvarchar (max).
Когда я удаляю столбец статьи из моего выбора, мой процесс выполняется быстро.
Для дальнейшей логики я создал новый сохраненный процесс, получающий только первичный ключСтолбец и столбец nvarchar (max).
Я воспроизводлю то же поведение. Вот мой новый proc = MyNewProc (длится> 5 минут при вызове из c # и 0 секунд на сервере из SSMS)
CREATE PROCEDURE Student.GetStudents
AS
BEGIN
SET NOCOUNT ON
-----------------
SELECT StudentId,Article
FROM Students
WHERE Degree=1
END
MyNewProc возвращает только 2500 строк.
Это нормально?Как я могу улучшить это.
ВЫБЕРИТЕ СУММУ (DATALENGTH (Статья)) ОТ ШКОЛЬНИКОВ, ГДЕ = 1 результат - 13885838