Отображение большого количества записей (более 5К)

@masta
Дата: 11.11.2005 15:20:49
Использую odbc-компоненты, DataGrid для отображения заполненного DataSet
( в DataGrid 1 TableStyle для одной таблице в DataSet-е ). При кол-ве записей более 2000 вызов dataadapter.fill( dataset ) - т.е. последующее заполнение DataGrid исполняется порядка 10 сек!!! А последующие команды на фильтрацию данных, т.е. DataView.Filter = "condition" тормозят еще больше. Есть механизмы ускорения? где bottleneck процесса?
k1ng
Дата: 11.11.2005 15:50:06
@masta
Использую odbc-компоненты, DataGrid для отображения заполненного DataSet
( в DataGrid 1 TableStyle для одной таблице в DataSet-е ). При кол-ве записей более 2000 вызов dataadapter.fill( dataset ) - т.е. последующее заполнение DataGrid исполняется порядка 10 сек!!! А последующие команды на фильтрацию данных, т.е. DataView.Filter = "condition" тормозят еще больше. Есть механизмы ускорения? где bottleneck процесса?

Сколько оперативки на компьютере? Какой размер одной записи? У меня при работе с сотнями тысяч записей в DataGrid никаких существенных тормозов нет.
@masta
Дата: 11.11.2005 18:18:38
оперативки 512, на одну запись ~ 1Kb, база MSSQL, у вас более 100К записей и никаких тормозов? какая субд?
k1ng
Дата: 11.11.2005 18:44:10
@masta
оперативки 512, на одну запись ~ 1Kb, база MSSQL, у вас более 100К записей и никаких тормозов? какая субд?

SQL Server 2000, но он тут не при чем - DataSet существует на локальной машине. У меня 300 тыс записей по 1.5Kb отображаются без тормозов. Попробуй запустить приложение на другой машине, потому что я не вижу никаких объективных причин чтобы DataGrid с двумя тысячами записей сильно тормозил.
@masta
Дата: 11.11.2005 18:58:31
думаю, для ясности необходимо конкретика.
1) таблица по которой идет запрос содержит несколько foreign keys и запрос соответствено c 2,3 - inner join - может ли это настолько торомзить?
2) данные связаны с datagrid через dataview который в свою очередь с dataset
3) на старте сразу же используется сортировка через dataview.sort
сразу же вопрос (алогичный совершенно, но в такой ситуации цепляешся за все)
есть ли отличие dataadapter.fill( dataset) от четкого указания
dataadapter.fill( dataset, "tablename") если dataset типизированный, т.е. создан визардом на основе выборки { dsTableDataset : DataSet .... }
Relic Hunter
Дата: 11.11.2005 19:54:07
Paging нужно делать. Поисчите на форуме, недавно обсуждалось.
@masta
Дата: 11.11.2005 20:57:09
Relic Hunter
Paging нужно делать. Поисчите на форуме, недавно обсуждалось.

paging,pagesize настройки для web-datagrid, в данном случае в разработке windows.forms.datagrid
k1ng
Дата: 12.11.2005 00:42:41
@masta
думаю, для ясности необходимо конкретика.
1) таблица по которой идет запрос содержит несколько foreign keys и запрос соответствено c 2,3 - inner join - может ли это настолько торомзить?
2) данные связаны с datagrid через dataview который в свою очередь с dataset
3) на старте сразу же используется сортировка через dataview.sort
сразу же вопрос (алогичный совершенно, но в такой ситуации цепляешся за все)
есть ли отличие dataadapter.fill( dataset) от четкого указания
dataadapter.fill( dataset, "tablename") если dataset типизированный, т.е. создан визардом на основе выборки { dsTableDataset : DataSet .... }

Джойны конечно же сильно тормозят, но это время выполнения выборки на сервере, которое никак не связано с работой с загруженными в DataSet данными на локальной машине.
Класс DataView и перегрузки метода Fill не влияют значительно на скорость работы. Я не встречал чтобы с 2 тысячами записей .NET Framework настолько сильно тормозил.
Чтобы ускорить заполнение DataSet можно использовать либо нетипизированный DataSet либо отключать проверку ограничений на время заполнения.
На старте используй сортировку не в DataView а в запросе (ORDER BY).
Оцени время выполнения каждой операции - заполнение DataSet, привязка DataGrid к DataSet, метод RowFilter DataView.
Если ничего не поможет, то действительно придется использовать paging, Relic Hunter я думаю имел в виду серверный курсор, а не WebDataGrid