.NET - начать чтение из DataReader до завершения запроса? - PullRequest
3 голосов
/ 13 января 2011

В настоящее время я работаю над программой, которая преобразует старую базу данных в более новый стиль, и одна из задач, которые мне были назначены, - удалить некоторые старые двоичные столбцы и преобразовать их в документы в нашем репозитории.

У нас в таблице около 1,1 миллиона строк, и мой процесс занимает около 12 часов.

Я ищу способы сделать все это немного быстрее, и одна вещь, на которую я обращаю внимание, - это получение данных быстрее. Есть ли способ получить результаты моего запроса до его завершения? Я заметил, что когда я запускаю оператор "select *" для этой таблицы в Query Analyzer, я сразу начинаю получать результаты, но когда я использую ExecuteReader в .NET, этот запрос, похоже, занимает около 30 минут, прежде чем я могу начать читать строки .

Ответы [ 2 ]

1 голос
/ 13 января 2011

Может помочь использование command.ExecuteReader(CommandBehavior.SequentialAccess).Однако для этого требуется, чтобы вы читали столбцы по порядку, а также чтобы вы читали двоичные значения другим способом.Я рекомендую прочитать документацию по SequentialAccess , чтобы вы знали, какие другие изменения в вашем коде могут потребоваться.

Учтите, что тот же запрос выполняется мгновенно в Query Analyzer.Это говорит мне о том, что для запроса не требуется 30 минут, чтобы вернуть первый результат, или это будет сделано в Query Analyzer.Я думаю, что обработка больших двоичных значений является вероятным объяснением этого несоответствия.Одним из быстрых способов проверки было бы изменить запрос, чтобы выбрать все, кроме двоичных столбцов, и посмотреть, изменит ли это время, которое занимает ExecuteReader.Если время выполнения одинаково без двоичных столбцов, маловероятно, что SequentialAccess поможет.Если это быстрее без двоичных столбцов, то SequentialAccess может стоить использовать.

0 голосов
/ 13 января 2011

Один совет - не использовать select *, если вам не нужны все столбцы в запросе. Возможно, этот вопрос тоже поможет: Стратегии оптимизации производительности в крайнем случае

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