Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Ответ
 
Опции темы
Старый 08.10.2011, 10:52   #1
mrsandy
AnyKey`щик
 
Регистрация: 10.01.2007
Сообщений: 14
Написано 2 полезных сообщений
(для 2 пользователей)
Вопрос Ускорение работы

Возможно вопрос и не в тот раздел но нужен совет.
Есть: данные, допустим таблица с товарами в xls файле, возможно повторение одного товара 1-2 раза (таких товаров обычно не больше 20-30). Количество строк от 5К до 100К. Таблица не сортирована.
Нужно: провести анализ.
Мои действия: заливаю данные в БД.
Иду по списку товара по порядку , селектом проверяю есть ли данный товар уже в базе. Если есть то апдейтом изменяю параметры. Если товар встречается впервые то инсерчу его в БД.
Проблема: если товаров до 5К то скорость внесения данных в БД сносная. Если 10К-15К - процесс внесения в БД заставляет пить кофе (иногда даже пару чашек).
Анализ данных в БД проходит довольно быстро.
Как бы ускорить заполнение БД?
(Offline)
 
Ответить с цитированием
Старый 13.10.2011, 11:00   #2
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Ответ: Ускорение работы

Какую БД используешь? Запросы покажи, скорее всего в них не так что - то. Лучше конечно дай части исходников где ты делаешь запросы к БД.
(Offline)
 
Ответить с цитированием
Старый 14.10.2011, 06:33   #3
mrsandy
AnyKey`щик
 
Регистрация: 10.01.2007
Сообщений: 14
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Ускорение работы

Использую AbsoluteDatabase (http://www.componentace.com/bde_repl...database. htm) . Основная утечка времени была в проверке селектом существует ли такая запись в БД.
Выкрутился проще: сделал Tlist из артикулов , отсортировал и удалил не повторяющиеся (как я и говорил их остается 15-30 из любого по объему входного списка). И при внесении в БД новые сразу инсерчу а уже существующие апдейчу. Ускорение в десятки если не сотни раз.
(Offline)
 
Ответить с цитированием
Старый 15.10.2011, 01:36   #4
Baisangur
ПроЭктировщик
 
Аватар для Baisangur
 
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений
(для 23 пользователей)
Ответ: Ускорение работы

А я бы не использовал AbsoluteDatabase, а взял бы тот же SQLite. По мне так лучше пользоваться проверенными решениями, насколько я помню под Делфи есть компоненты, под Лазарус точно, там из коробки даже есть.
Конечно, если выкрутился, то хорошо.
Но все - же интересно в чем была проблема? Ты индексируешь строки, т.е. есть ли у тебя для каждой таблицы поле с флагом PRIMARY KEY? Без такого поля БД не может корректно построить индекс и при селектах тупо проходит по всей таблице и сравнивает требуемые значения.
(Offline)
 
Ответить с цитированием
Старый 13.12.2011, 14:16   #5
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Ускорение работы

в разных бд есть методы что то типа InsertOrUpdate, плюс в добавок ко всему делай BEGIN TRANSACTION END TRANSACTION COMMIT
(Offline)
 
Ответить с цитированием
Старый 20.01.2012, 10:33   #6
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Ответ: Ускорение работы

я использую FireBerd там есть процедуры в которых твою проверку можно легко организовать. Я и большие объемы грузил. Также возможно много времени уходит на считывания данных их экселя.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:34.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com