Правильная работа с БД

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
GuinPin
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 19.05.2004 (Ср) 6:54

Правильная работа с БД

Сообщение GuinPin » 19.05.2004 (Ср) 22:27

В качестве исходных данных имеется VB .NET из комплекта VS .NET 2003, MySQL на котором лежит база.
Необходимо показать пользователю справочник номенклатуры. В настоящее время там лежит примерно 53 килозаписи, скоро будут примерно 200.
Для отображения я использую ListView, т.к. для меня он более удобен. Однако, в данном случае, это не столь принципиально.
Проблема заключается в том, что заполнение данными занимает от минуты до полутора и памяти после этого приложение отжирает метров 50-60 (при использовании DataGrid+ODBC примерно то же самое)
Не подскажет ли All, как правильно работать с данными?
Тот же 1С (с которого и переползаем) открывает справочник практически мгновенно, при этом памяти расходуется метров 15-19 на все приложение.
В общем, подскажите, куда ткнуться, что почитать, etc.

Заранее сэнксы.

С уважением, Сошников Иван

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.05.2004 (Чт) 13:06

Во-первых, а чего еще ты хотел от НЕТа? Мне иногда кажется, что он создавался для машин с бесконечной памятью.
Далее. 1С наверняка использует асинхронную подкачку данных, т.е. сначала быстро показывает тебе первые 100-200 записей, а все остальное тихо качает, пока ты втыкаешь на первые результаты. Не знаю, как с асинхронностью в ADO.NET, но в старом, чтоб такое реализовать... короче, проще было сразу все на ODBCDirect писать.

Используй фильтр. Выводи только первые записи, например, TOP 100. Пытайся использовать async fetch, если это возможно. Вариантов много, короче.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.05.2004 (Пт) 11:17

NET тут вообще-то не причем - все дело как всегда в ручках!

1. ListView нагружаемый контрол - по определению при загрузке большого количества записей он будет тормозить! Тут ты сам себе злой буратино. Кстати, а что в нем хорошего? Возьми нормальный Grid-тот же Janus GridEx и забудешь про ListView и родной DataGrid как про страшный сон.

2. Дергать большое количество записей (которых на сервере могут быть миллионы) нехорошо по определению - надо или ограничивать количество выборки (то есть выбирать к примеру только 300 записей, а для остальных просить пользователя уточнить условие), ну или использовать в качестве источника данных динамический Recordset.
В ADO.NET такого не предусмотрено, но никто не мешает использовать обычное ADO (если очень хочется). Хотя лучше, конечно, ограничиться каким-то количеством выводимых записей...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: PetalBot и гости: 4

    TopList