заполнение набора данных тысячами записей - PullRequest
0 голосов
/ 15 марта 2011

Я использую оракула в качестве бэк-энда.В базе данных есть таблица с 5000 записями и 160 столбцами.я хочу отобразить все эти записи в gridview (в asp.net, c #).Но для заполнения набора данных требуется более 10 минут.Можете ли вы предложить какой-либо другой вариант?Возможно ли использовать нить?

Ответы [ 4 ]

2 голосов
/ 15 марта 2011

Я предполагаю, что это не код .net, который занимает 10 минут.Пройдите по своему коду и найдите точку дросселирования, где все это время занимает.Это может быть ваш запрос к базе данных.Если это запрос, вам нужно найти способы его настройки.

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

И да, не используйте для этого другой поток.Это дизайн, который должен быть переработан.

1 голос
/ 15 марта 2011

hejdig.

У меня был несколько похожий сценарий несколько лет назад, когда мы обсуждали, была ли решетка или запрос и обработка данных, которые занимали время.Это было в WinForm 2.0, но проблема та же.

Мы загрузили профилировщик и получили ответ через несколько минут.Сетки.Запрос и обработка данных выполнялись всего несколько процентов времени.

Если вы попытаетесь загрузить 5000 строк в сетку данных в aspnet, вы можете задушить систему.Начните с поворота зрения.Вы теряете много функциональности, но получаете биты.Запустите профилировщик.Изучите использование сетки, отличной от сетки данных MS.Попробуйте пейджинг.Примерно в таком порядке.

Если вы знаете своих пользователей, вы можете сохранить электронную таблицу для их открытия.Есть также несколько простых приемов для открытия страницы в виде электронной таблицы (просто выведите CSV или XML и измените тип MIME).Если это графический интерфейс, который требует времени.

Удачного взлома и удачной охоты.

/ OF

0 голосов
/ 15 марта 2011

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

http://www.codeproject.com/KB/custom-controls/ASPNETPagerControl.aspx

0 голосов
/ 15 марта 2011

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

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