Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрое добавление данных, в DataSet 
:(
    Опции темы
Knuckles
Дата 4.12.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



Подскажите, опытные разработчики, как лучше поступить.
Сейчас выполняю свой первый серьезный проект. Программа, помимо прочего, берет с сервера файл с данными (очень простой бинарник). Эти данные нужно сложить в локальную базу данных, отсортировать, выбрать нужный диапазон (по дате) и выдать юзеру в виде таблицы. Все это я уже сделал, но работает медленно.

1. В виде базы данных использую TClientDataSet, потому что прикручивать настоящую СУБД к программе накладно в смысле размера (да и устанавливать ее надо).
2. Из базы данные отдаются в виде xml файла и далее отображаются браузером - так что тут все ок.
3. Чтобы добавить в локальную базу данные из скаченного файла делаю DB{TClientDataSet}.AppendRecord(...);
И вот тут самое узкое место - скажем тысячу записей добавляет шустро, а вот 100 тысяч уже очень медленно (а их может быть и больше).

Как быстро добавлять записи? Что можно поменять в проекте? Может стоит отказаться от обычного датасета? В общем выслушаю все предложения по рационализации.
Заранее спасибо.
PM   Вверх
Guedda
Дата 4.12.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Я думаю, что лучше будет использовать SQL. Тобишь используешь не TTable, а TQuery. Всё получится гораздо быстрее.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Knuckles
Дата 4.12.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



Цитата(Guedda @ 4.12.2006,  11:45)
Я думаю, что лучше будет использовать SQL. Тобишь используешь не TTable, а TQuery. Всё получится гораздо быстрее.

А TTable и не используется smile
TQuery помог бы при выборке данных (верно?), а у меня трабла с добавлением.
PM   Вверх
Guedda
Дата 4.12.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



да и с добавлением намного быстрее всё проходит. INSERT INTO...


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Akella
Дата 4.12.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Knuckles @  4.12.2006,  11:42 Найти цитируемый пост)
а вот 100 тысяч уже очень медленно

с локальными БД так и будет, не парься
PM MAIL   Вверх
x77
Дата 4.12.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



Knuckles, чтобы было быстро - надо брать нормальную СУБД. тот же Firebird. если отказаться от датасетов и их потомков, сделав всё на TIbSql (или его аналоге из Fib+), сотни тысяч записей будут вставлятся достаточно быстро. у меня на тестовой базе десять миллионов записей вставляются за несколько минут. там всё будет зависеть от объёма записей и от бизнес-логики на сервере (наличия триггеров на вставку, индексации и т.д.)


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Knuckles
Дата 5.12.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



x77, Спасибо за совет. Подумаю.
Репутацию не даю, ибо не дорос smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0821 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.