Запрос SQL Server работает медленнее с ADO.NET, чем в SSMS

Вы корректны, значение по умолчанию является моим именем asc. Единственным путем я нашел для изменения порядка сортировки это для создания таблицы данных из набора FileInfo.

Вы можете, тогда использовал DefaultView из таблицы данных, и отсортируйте каталог с.Sort методом.

Это, вполне включают и довольно медленный, но я надеюсь, что кто-то отправит лучшее решение.

9
задан Chris 17 November 2009 в 17:15
поделиться

3 ответа

Если плохой план кэширован, то такой же плохой план следует использовать и из SSMS, если вы запустите тот же запрос с идентичными аргументами.

Нет лучшего решения, чем поиск основная причина. Попытка взглянуть на различные настройки в надежде, что это решит проблему, никогда не даст вам уверенности, что она действительно исправлена. Кроме того, в следующий раз в системе может возникнуть другая проблема, и вы подумаете, что та же проблема возникнет снова, и примените плохое решение.

Лучше всего попытаться зафиксировать плохой план выполнения. Класс событий Showplan XML Событие профилировщика - ваш друг, вы можете получить план вызова ADO.Net. Это очень тяжелое событие, поэтому вам следует подключать профилировщик и фиксировать его только тогда, когда проблема проявляется, в коротком сеансе.

Статистика ввода-вывода запросов также может помочь. События RPC: Completed и SQL: Batch Completed включают в себя операции чтения и записи, поэтому вы можете сравнить количество логических операций ввода-вывода, выполненных при вызове ADO.Net с вызовом SSMS. Большая разница (для одного и того же запроса и параметров) указывает на разные планы. sys.dm_exec_query_stats - еще одно направление исследования. Вы можете найти там свои планы запросов и проверить статистику выполнения.

Все это должно помочь с уверенностью установить, является ли проблема плохим планом или чем-то еще, для начала.

dm_exec_query_stats - еще одно направление расследования. Вы можете найти там свои планы запросов и проверить статистику выполнения.

Все это должно помочь с уверенностью установить, является ли проблема плохим планом или чем-то еще, для начала.

dm_exec_query_stats - еще одно направление расследования. Вы можете найти там свои планы запросов и проверить статистику выполнения.

Все это должно помочь с уверенностью установить, является ли проблема плохим планом или чем-то еще, для начала.

6
ответ дан 4 December 2019 в 13:02
поделиться

Возможно ли, что ваш запрос ADO.NET выполняется после того, как система была занята другими делами, так что необходимые данные больше не находятся в ОЗУ? А когда вы тестируете SSMS, да?

Вы можете проверить это, выполнив следующие две команды из SSMS перед запуском запроса:

CHECKPOINT
DBCC DROPCLEANBUFFERS

Если это приводит к медленному запуску запроса SSMS, то есть некоторые уловки вы можете играть на стороне ADO.NET, чтобы она работала быстрее.

0
ответ дан 4 December 2019 в 13:02
поделиться

У меня та же проблема. Единственный способ исправить это - включить АРИТАБОРТ. но, к сожалению, когда это случится снова, я должен установить АРИТАБОРТ ВЫКЛЮЧЕН.

Понятия не имею, при чем тут АРИТАБОРТ, но это работает, у меня эта проблема уже более 2 лет и до сих пор не решена. Базы данных, с которыми я работаю, превышают 300 ГБ, так что, может быть, это проблема с размерами....

Ближе всего к решению этой проблемы я подошел с более ранней заметки. Google Groups post

Дайте мне знать, если вам удалось полностью решить эту проблему, так как она очень разочаровывает!

2
ответ дан 4 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: