Есть некоторый DataSet, в него нужно залить около 40000 записей. Пока что использую DataTable.LoadDataRow как самый быстрый. Но и этот метод достаточно медленно работает у клиента.
Загрузка данных в виде xml (DataSet.LoadXml) работает быстрее, но данные не в виде XML. Есть мысль отконвертить данные в XML перед загрузкой, но как-то это мне не нравится...
Уже пробовал
1. DataTable.NewRow(); ...; DataTable.AddRow();
2. DataTable.Load
всё работает не быстрее DataTable.LoadDataRow....
Может кто знает быстрый способ "набить" пустой DataSet данными ?
Здравствуйте, Sergey J. A., Вы писали:
SJA>Есть некоторый DataSet, в него нужно залить около 40000 записей. Пока что использую DataTable.LoadDataRow как самый быстрый. Но и этот метод достаточно медленно работает у клиента. SJA>Загрузка данных в виде xml (DataSet.LoadXml) работает быстрее, но данные не в виде XML. Есть мысль отконвертить данные в XML перед загрузкой, но как-то это мне не нравится...
SJA>Уже пробовал SJA>1. DataTable.NewRow(); ...; DataTable.AddRow(); SJA>2. DataTable.Load
SJA>всё работает не быстрее DataTable.LoadDataRow....
SJA>Может кто знает быстрый способ "набить" пустой DataSet данными ?
Я бы подумал о ленивой загрузке данных.
Зачем пользователю нужны все 40 000 записей?
Выбирай по 100 — 1 000 записей и будет тебе счастье.
Может стоит доработать view что бы данные выводились по-странично — "A-D", "E-H", "I-L" and etc?
В общем выход у тебя один уменьшать объем данных выводимых пользователю за один запрос
Здравствуйте, Sergey J. A., Вы писали:
SJA>Есть некоторый DataSet, в него нужно залить около 40000 записей. Пока что использую DataTable.LoadDataRow как самый быстрый. Но и этот метод достаточно медленно работает у клиента. SJA>Загрузка данных в виде xml (DataSet.LoadXml) работает быстрее, но данные не в виде XML. Есть мысль отконвертить данные в XML перед загрузкой, но как-то это мне не нравится...
SJA>Уже пробовал SJA>1. DataTable.NewRow(); ...; DataTable.AddRow(); SJA>2. DataTable.Load
SJA>всё работает не быстрее DataTable.LoadDataRow....
SJA>Может кто знает быстрый способ "набить" пустой DataSet данными ?
Чуть было не забыл можешь посмотреть в сторону DataReader' ов
Здравствуйте, white_znake, Вы писали:
_>Я бы подумал о ленивой загрузке данных. _>Зачем пользователю нужны все 40 000 записей?
Нужны все и сразу. Пользователь сканером вводит EAN, который является PK в одной из таблиц(причём самой большой). Нужно найти этот элемент и сделать с ним некоторые действия. Думаю тут ленивая загрузка не подходит...
Да, и сделать какой-то SELECT * FROM Items WHERE EAN='<user input>' тоже не выйдет — никакой СУБД(Ascess, SQ Server) нет. Данные лежат в файле в нашем формате и при старте скопом вычитываются и впихиваются в DataSet. По мере работы изменения в DataSet-е дописываются в файл.
Возможно изначально не стоило использовать DataSet...
Здравствуйте, white_znake, Вы писали:
_>Чуть было не забыл можешь посмотреть в сторону DataReader' ов
Если имеется в виду работать с DataReader-ом вместо DataSet-а, то так не получится. Нужно активно искать и находить эелементы.
А если — реализовать IDataReader и передать в DataTable.Load, то так работает медленнее чем через LoadDataRow.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Есть некоторый DataSet, в него нужно залить около 40000 записей. Пока что использую DataTable.LoadDataRow как самый быстрый. Но и этот метод достаточно медленно работает у клиента. SJA>Загрузка данных в виде xml (DataSet.LoadXml) работает быстрее, но данные не в виде XML. Есть мысль отконвертить данные в XML перед загрузкой, но как-то это мне не нравится...
SJA>Уже пробовал SJA>1. DataTable.NewRow(); ...; DataTable.AddRow(); SJA>2. DataTable.Load
SJA>всё работает не быстрее DataTable.LoadDataRow....
SJA>Может кто знает быстрый способ "набить" пустой DataSet данными ?
На ум всплывают две вещи:
1.датасет привязан к контролам
2.включены констрейнты.
Здравствуйте, Sergey J. A., Вы писали: SJA>Нужны все и сразу SJA>Да, и сделать какой-то SELECT * FROM Items WHERE EAN='<user input>' тоже не выйдет — никакой СУБД нет SJA>Возможно изначально не стоило использовать DataSet...
Кмк, из этого логически следует сделать так, чтобы СУБД была.
Здравствуйте, Аноним, Вы писали:
А>На ум всплывают две вещи: А>1.датасет привязан к контролам А>2.включены констрейнты.
А>выход — приостановка binding и констрейнтов.
Увы, не привязан, и констрейнты во время заливки отключены....