Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2014, 13:37   #1
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию время парсинга

Всем привет!

выполняется парсинг файла, в файле определяются объекты и записываются в БД (firebird).

само собой, в таблице, куда записываются объекты, есть инкрементное поле.

каждый объект имеет свой handle, который уникален в файле.

при записи объекта, дабы исключить два одинаковых объекта в БД, идет проверка на наличие этого handle в БД, если такого нет, то идет запись в противном случае идет обновление.

в файлах, с которыми сейчас работаю 18 - 20 тыс. объектов, проверка handle, сильно замедляет парсинг файла... собственно сама программа подразумевает работу (а значит и запись) с несколькими такими файлами.

так вот, вопрос такой:

как сократить время парсинга, в данном случае? или остается только терпеть...
water_ вне форума Ответить с цитированием
Старый 23.06.2014, 13:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделать альтернативный уникальный индекс по handle
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.06.2014, 14:26   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

что за файл, что за субд? что за нафик такой сказать много букаф и ничего конкретного?
eval вне форума Ответить с цитированием
Старый 23.06.2014, 14:26   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Сделать альтернативный уникальный индекс по handle
и как оно ускорит?
eval вне форума Ответить с цитированием
Старый 23.06.2014, 14:27   #5
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

спасибо, пробовал, время сокращается но не на много

может стоит поменять структуру, как вариант??
структура сейчас:

tblObjects: id trace type layer handle

tblPoints: id id_object x y z

и убрать проверку с handle??
срабатывает значительно быстрее: 2-3минуты, против варианта с "CONSTRAINT uk_handle unique (Handle) using index ix_handle", где парсинг прошел за ~2часа (21617 объектов)

...это противоречит нормализации таблиц... но зато без проверки handle работа ускоряется

Последний раз редактировалось water_; 23.06.2014 в 14:31.
water_ вне форума Ответить с цитированием
Старый 23.06.2014, 14:29   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

18 - 20 тыс - 2-3минуты это много
eval вне форума Ответить с цитированием
Старый 23.06.2014, 14:33   #7
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

файл текстовый (*.dxf) autocad
бд firebird
объекты, собственно элементы чертежа
water_ вне форума Ответить с цитированием
Старый 23.06.2014, 14:34   #8
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

ориентировочно 2-3минуты, но это значительно быстрее 2х часов
water_ вне форума Ответить с цитированием
Старый 23.06.2014, 14:50   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
и как оно ускорит?
Проверка на существование быстрей будет.
Цитата:
Сообщение от water_ Посмотреть сообщение
ориентировочно 2-3минуты, но это значительно быстрее 2х часов
Покажи запрос и в одном, и в другом варианте. Или дело не в нем, а в проге, через которую это все в базу пишется?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.06.2014 в 14:53.
Аватар вне форума Ответить с цитированием
Старый 23.06.2014, 14:56   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Проверка на существование быстрей будет.
да, я чуть поперек понял.. в плане того что не понятно что у автора -
говорю ж ничего конкретного, что-то как-то парсится, где-то что-то проверяется, как-то записывается, типа отгадай где тормоза
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с парсинга. foxes Работа с сетью в Delphi 3 20.10.2012 22:52
Оптимизация парсинга Lauri Общие вопросы Delphi 3 08.03.2012 14:54
Ошибки парсинга waka2ebawer PHP 2 26.02.2012 19:31
Оптимизация парсинга Lauri Общие вопросы Delphi 5 14.01.2012 00:04
ВАРИАНТЫ ПАРСИНГА Vova777 Общие вопросы Delphi 2 04.09.2010 23:51