-
Вопрос по БД MSAccess
Есть программа обработки прайсов написанная на DELPHI 7 с использование СУБД MSAccess.
Программа сравнивает одну ячейку столбца - P/N с другими 3-мя ячейками из других прайсов! Находя совпадение товар считается одинаковым и переносится через фильтры в сводный прайс, тем самым отсекаются одинаковые товары!
Итогом работы программы становиться один сводный прайс из 10 поставщиков.
ИТОГО имеем 10 поставщиков по 3000 строк у каждого.
Итогом получается прайс в 5500 позиций товара.
Не понятно почему программа тратит на обработку прайса около 1 часа
при процессоре AMD ATHLON X2 5200 и 2Gb оперативки.
Может кто то подскажет в чем причина такой длительной обработки?
-
Мне кажется, что причина в том, что дельфийская программа написана с использованием только ADOTable и перебирает все записи методом Next. С учётом вложенных циклов и 3000 строк (скорость ADOTable, по личным наблюдениям, падает очень сильно) мы и получаем такое время
Если использовать, например, ADOQuery и составить нескольно SQL-запросов, то, я думаю, что время работы будет уже приемлемо. Причём реально приемлемо.
-
Как вариант - неправильно организована сама база. Там есть такое понятие как индексы по этому самому P/N?
-
да вроде разобрались уже! все было проще! там в цикле была отрисовка таблиц вставлена! :)