Я вижу, что вы уже используете response.flush () для прерывистой очистки данных в браузере во время процесса, но если вы используете AJAX, вызов должен сначала завершиться до вызова функции обратного вызова AJAX, поэтому я думаю, что response. флеш там не будет никакой пользы.
Вы можете попробовать вызвать URL-адрес AJAX напрямую и вставить в ответ response.write (), чтобы увидеть, что происходит (и какова скорость)
Чтобы получить еще больше информации, вы можете добавить таймер перед запросом, после запроса и внутри цикла и response.write время, прошедшее с момента запуска сценария. Это даст вам очень хорошее представление о том, где происходит задержка: http://www.codefixer.com/codesnippets/vbscript_timer_function.asp
Вы говорите, что машина зависает, это клиентский компьютер с браузером или сервер, на котором работает IIS? Если отправляется множество данных, я видел, как браузеры зависали и не обновлялись до тех пор, пока это не будет сделано.
Попробуйте добавить WITH NOLOCK после каждого имени таблицы в вашем запросе, чтобы выбрать без блокировки базы данных для записи. Это может дать вам некоторые данные, которые были перезаписаны во время выполнения вашего запроса, но обычно это не проблема.
Кроме того, индексы. Попробуйте изменить кластеризованный индекс в полях, которые вы используете в операторе WHERE, или добавьте несколько обычных индексов, если вам нужен кластеризованный индекс. Оптимизация ваших индексов значительно ускорит процесс, если вы этого не сделали.
НТН,
Эрик