![]() |
|
![]() ![]() ![]() |
|
Алкоголик |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
Есть текстовый файл(150мб) в нем надо удалить одинаковые вопросы. Сделал так. Выделяем вопрос, проверяем есть ли в он БД, если нет то записываем в БД. БД Access работаю с ней через ADO, но на обработку файла уходит где-то 15 минут, надо сократить до 5 минут, есть какие-нибудь предложения?
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 3 Всего: 72 |
Варианты:
1. Отказаться от БД и использовать (к примеру) TDictionary или TStringList с dupIgnore ? (будет гораздо быстрее) 2. Ввести в БД уникальный ключ по полю "вопрос" и не проверять, а просто записывать, отлавливая исключения, возникающие на дубликатах? |
|||
|
||||
Алкоголик |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
2 вариант и использую.
А по первому, программу будут использовать на ноутбуке(его ТТХ не знаю), но судя потому что на моем компе программа отрабатывает за 5 минут, а на их за 15, то машинка быстродействием не отличается. Поэтому боюсь если 150Мб грузить в память, то это тоже ничем хорошим не закончится. Прочитал тут про DAO, но не смог найти примеров. |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 3 Всего: 72 |
Почему? Приложению доступно как минимум 1,5 гектара под свои нужды, вне зависимости от того, сколько оперативки на компьютере. Как? Код в студию, пожалуйста. Добавлено через 2 минуты и 12 секунд У меня закрались сомнения по поводу использования именно второго предложенного варианта ввиду фразы Проверку лучше отдать на откуп самой БД. |
|||
|
||||
Алкоголик |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 26.1.2004 Репутация: нет Всего: нет |
А фраза да, я намеренно исказил. Считал, что так делать не правильно и было стыдно говорить, но так оказалось быстрее, чем если проверять сначала. Сделал с striglist. Спасибо за совет. Это сообщение отредактировал(а) Алкоголик - 20.3.2014, 16:01 |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 3 Всего: 72 |
А какие-нибудь сравнительные характеристики можно опубликовать?
С Access мы знаем, что код отрабатывает за 5 минут (а на каком-то ноутбуке - за 15) А как обстоят дела с тем же самым файлом, но на TStringList? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |