Ускорение работы
Возможно вопрос и не в тот раздел но нужен совет.
Есть: данные, допустим таблица с товарами в xls файле, возможно повторение одного товара 1-2 раза (таких товаров обычно не больше 20-30). Количество строк от 5К до 100К. Таблица не сортирована. Нужно: провести анализ. Мои действия: заливаю данные в БД. Иду по списку товара по порядку , селектом проверяю есть ли данный товар уже в базе. Если есть то апдейтом изменяю параметры. Если товар встречается впервые то инсерчу его в БД. Проблема: если товаров до 5К то скорость внесения данных в БД сносная. Если 10К-15К - процесс внесения в БД заставляет пить кофе (иногда даже пару чашек). Анализ данных в БД проходит довольно быстро. Как бы ускорить заполнение БД?:SOS: |
Ответ: Ускорение работы
Какую БД используешь? Запросы покажи, скорее всего в них не так что - то. Лучше конечно дай части исходников где ты делаешь запросы к БД.
|
Ответ: Ускорение работы
Использую AbsoluteDatabase (http://www.componentace.com/bde_repl...database. htm) . Основная утечка времени была в проверке селектом существует ли такая запись в БД.
Выкрутился проще: сделал Tlist из артикулов , отсортировал и удалил не повторяющиеся (как я и говорил их остается 15-30 из любого по объему входного списка). И при внесении в БД новые сразу инсерчу а уже существующие апдейчу. Ускорение в десятки если не сотни раз. |
Ответ: Ускорение работы
А я бы не использовал AbsoluteDatabase, а взял бы тот же SQLite. По мне так лучше пользоваться проверенными решениями, насколько я помню под Делфи есть компоненты, под Лазарус точно, там из коробки даже есть.
Конечно, если выкрутился, то хорошо. Но все - же интересно в чем была проблема? Ты индексируешь строки, т.е. есть ли у тебя для каждой таблицы поле с флагом PRIMARY KEY? Без такого поля БД не может корректно построить индекс и при селектах тупо проходит по всей таблице и сравнивает требуемые значения. |
Ответ: Ускорение работы
в разных бд есть методы что то типа InsertOrUpdate, плюс в добавок ко всему делай BEGIN TRANSACTION END TRANSACTION COMMIT
|
Ответ: Ускорение работы
я использую FireBerd там есть процедуры в которых твою проверку можно легко организовать. Я и большие объемы грузил. Также возможно много времени уходит на считывания данных их экселя.
|
Часовой пояс GMT +4, время: 09:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot