@SolomonRutzky має рацію.
SQL Profiler Trace - єдиний спосіб ( без редагування Sproc ).
Редагуйте свою Sproc:
Однак наступне найкраще - трохи відредагувати відповідний Sproc.
Оголосіть змінну DateTime на початку з поточного часу.
В кінці Sproc запишіть значення таблиці Sproc_StartTime, Sproc_EndTime та параметрів у таблицю.
Ви можете навіть додати деяку умовну логіку, щоб використовувати DateDiff () лише для ведення журналів, коли в обробці Sproc було використано тривалий час.
Це може пришвидшити ваш Sproc та зменшити споживання місця вашої таблиці журналів, коли Sproc працює на вершині.
Тоді у вас є файл журналу, який ви можете запитувати та аналізувати протягом місяців (без сліду, що працює в Prod).
Закінчивши налаштування свого Sproc, просто видаліть кілька доданих вами рядків логіки Timer і Logger.
Значення параметрів кешованого плану:
Слід зазначити, що включення в параметр "Текучий керований план" параметрів у вашій таблиці журналів може допомогти вам визначити, чи вони ускладнюють проблему продуктивності .
Я використовую, OPTIMIZE FOR
щоб встановити, як обробляти параметри в моєму Sproc, коли я знаю, що він буде використовуватися для нарізки та виправлення даних.
Я вважаю, що використання OPTIMIZE FOR
результатів і послідовних і швидких результатів при використанні того ж Sproc з параметрами, як і додаткові фільтри .
Це, безумовно, одна менша змінна, яку слід врахувати, якщо вказати, як з ними поводитися.
Нижче наведено приклад того, що ви можете додати до нижньої частини своєї Select-Statement:
OPTION(OPTIMIZE FOR (@SiteID = 'ABC',
@LocationID = NULL, @DepartmentID = NULL,
@EmployeeID = NULL, @CustomerID = NULL,
@ProductID = NULL, @OrderID = NULL, @OrderStatusID = NULL,
@IncludedCancelledOrders = 1,
@StartDate UNKNOWN, @EndDate UNKNOWN))