2016-10-17 2 views
-1

Я пытаюсь оценить относительную производительность использования предложения WHERE... IN в моем SP vs UNION s.Как профилировать один SP с профилировщиком SQL Server?

Я пробовал смотреть время исполнения и использовать SET STATISTICS TIME ON, но все просто возвращается, так как принимает 0 мс все время.

Так что я пытаюсь использовать профилировщик SQL Server. Я выбрал шаблон TSQL_SPs, но даже до того, как я запустил SP, трасса заполняется мусором. Как я могу сказать, чтобы он собирал только соответствующие данные для конкретного SP?

+0

Вы еще затянули план этого заявления? У него могут быть ответы на все вопросы. Возможно, что ваш 'in' в любом случае оптимизируется в« union », но вы будете знать только из фактического плана. Я никогда не использовал предопределенные профили и всегда настраивал свои собственные фильтры, используя учетные данные хоста/логина/пользователя, имя базы данных и/или имя приложения, если оно заполнено. Посмотрите, поможет ли это. И я не думаю, что ваш вопрос заслуживает ниспроверки! – ajeh

+0

@ajeh Настройка фильтра по имени БД очищается, спасибо за предложение. К сожалению, это не помогает мне оценить SP. Время начала и окончания идентично. – Legion

+0

Вы имеете в виду, что он выполняется менее чем за 1 миллисекунду? Это возможно. На этом этапе я запустил бы этот изолированный оператор, закодированный с использованием 'in' и' union', и сравните планы. Трассировка, вероятно, не подходит для вашего расследования. – ajeh

ответ

2

В профилировщике Sql, когда вы создаете новую трассировку, вы можете изменить свойства трассировки. Перейдите на вкладку «Выбор событий» в свойствах трассировки и перейдите к фильтрам столбцов.

Затем в текстовой таблице нажмите «Как добавить» и добавьте уникальное слово из вашего SP, которое вам нужно, а затем запустите трассировку. Таким образом, ваш след даст вам данные вашего SP. Вы можете поиграть с фильтрами столбцов в соответствии с вашими потребностями.

Смежные вопросы