Странное поведение SQL Server - нужен совет - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть сложный запрос (просто выберите со множеством вложенных объединений и подзапросов).
Я заметил в SQL Profiler, что когда он выполняется из приложения .NET ADO, он завершается за 30 секунд и выполняет 129 записей.(???).

Когда я выполнил этот же запрос (скопированный из Profiler) в SQL Server Management Studio, это заняло всего 1,2 секунды и 0 записей (правильно).

Знаете ли вы, почему производительность зависит от метода выполнения?

А почему select делает записи на БД?

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Запрос может быть оптимизирован по-разному в зависимости от того, откуда он запущен. У меня было то же самое при запуске хранимого процесса против фактического запроса внутри процесса в SSMS. Разница заключалась в том, что один запрос оптимизировался с помощью определенных подсказок JOIN, а другой - не оказывал существенного влияния на производительность.

Возможно, вам просто нужно вручную добавить подсказку о присоединении к запросу. Не видя запроса, я не могу сказать вам, какие изменения вам нужно внести, но попробуйте запустить запрос в SSMS, а затем взглянуть на план выполнения.

0 голосов
/ 01 апреля 2011

Это время показывает, что данные были буферизованы, и это вызывает такое сложное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...