Устранение проблемы тайм-аута ADO в VB6

Я столкнулся с проблемой при заполнении набора записей ADO в VB6. Запрос (запускающий SQLServer 2008) занимает всего около 1 секунды, когда я запускаю его с помощью SSMS. Он отлично работает, когда набор результатов невелик, но когда он составляет несколько сотен записей, это занимает много времени. Для возврата 800+ записей требуется около 5 минут (запрос по-прежнему занимает всего 1 секунду в SSMS), а 6000+ - более 20 минут. Я «исправил» исключение, увеличив время ожидания команды, но мне было интересно, есть ли способ заставить его работать быстрее, поскольку это не похоже на фактический запрос, который требует так много времени. Что-то вроде сжатия результатов, чтобы это не занимало много времени. Я запустил SQL Profiler, и экземпляры с клиентской машины выполняют больше операций чтения и занимают в 100 раз больше времени, чем обе метрики для запросов в SSMS. Текст запроса одинаков как для SSMS, так и для клиентского компьютера в соответствии с профилировщиком, поэтому я не думаю, что следует использовать другой план выполнения. Может ли сетевая библиотека или поставщик повлиять на это?

Статистика профилировщика:

  • Из клиентского приложения: 7041720 чтения, длительность 59458 мс, 3900 строк counts
  • Из SSMS: 30802 чтения, 238 мс продолжительность, 3900 счетчиков строк

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

5
задан Bryant Bowman 1 December 2010 в 22:12
поделиться