Я отвечу в общих чертах.
Если вы выбираете данные только без расчетов, то:
Часть базы данных
а . Оптимизируйте SQL-запрос, убедитесь, что вы используете правильные индексы в базе данных.
б . Не загружайте больше данных, которые вы выиграли, чтобы показать, и делайте подкачку.
с . Если вы извлекаете данные из слишком большого числа таблиц одновременно, создайте новую «плоскую» таблицу и предварительно отобразите результаты на регулярной основе в фоновом потоке.
Часть страницы
а . Пока вы загружаете данные, покажите их непосредственно и не буферизируйте их, и время от времени делайте сброс к ответу.
Если вы извлекаете данные с помощью вычислений, то выполняйте вычисления в фоновом потоке, прежде чем показывать их на запланированной основе, размещайте их на другой плоской таблице и отображайте эту таблицу.
Например, как показать данные, пока вы их получаете ....
<%
int KathePoteFlush = 1;
object Data;
While(GetNextData(Data))
{
if (20 % KathePoteFlush++ == 0)
Response.Flush();
Response.Write(RenderMyTableData(....data....));
};
%>