|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.08.2012, 15:12 | #1 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 61
|
ADO(mdb)+Delphi7
Всем добрый день!
Очень нужен нужный и важный совет) Сразу скажу что переходить на другую СУБД уже поздно, и если ничего нельзя поделать будет плохо. Вообщем о птичках: Есть база в которой куча таблиц с кучей данных. в таблице одной порядком 100 тыс + строк. данные заносятся циклически перебором. т.е может сразу за один клик добавится порядком 100 строк. Ну и происходит такое добавление с таким объемом данных около 5 минут. Вопросы: 1. Влияет ли объем таблицы на время добавления? 2. С каким объемом данных справляется аксесс в связке с делфи? 3. Или это и есть норма для аксеса? и ничего с этим уже не поделать? добавление происходит так: Код:
icq: 489-124-264; mail: invazia@mail.ru
Последний раз редактировалось nVz; 16.08.2012 в 15:16. |
16.08.2012, 15:21 | #2 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
ну акцес тормоз.
А ускорит твою работу, как на меня занесение всех изменений, за один раз, в бд, и подтверждение транзакции, 1 раз. А не каждый... А вообще тот кусок кода ничего не показывает как тебе можно помочь.
Skype : UASm1Le.
|
16.08.2012, 15:50 | #3 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 61
|
да кусок кода я скинул, потому что знаю что можно sql Запросом добавлять, а тут немного другое добавление. и где быстрее неизвестно.
А добавление в котором много строк за раз происходит обычным циклом for. сколько например накидали плюсиками в листбокс данных, столько строк и должно быть + остальные поля присваиваются. Вообщем походу Аксесс не способен быстрее обрабатывать столько данных? Просто дело в том что по коду можно сократить время на пару секунд при более разумном построении цикла, на правильном присваивании значениям переменным. но это все копейки. и если аксесс просто такой объем не способен обрабатывать, то эти секунды не спасают
icq: 489-124-264; mail: invazia@mail.ru
|
16.08.2012, 15:54 | #4 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 61
|
Sm1Le а не знаешь можно ли склеить 2 базы (mdb) Т.е для статистики и прочего есть основная огромная база, а для добавления данных аналогичная копия только пустая, и при завершении работы склеивать все в главную.
Может есть исходничек?
icq: 489-124-264; mail: invazia@mail.ru
|
16.08.2012, 16:22 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Sm1Le уже подсказал направление: один раз начать транзакцию, потом в цикле SQL-ским INSERT-ом вставка, по концу завершение транзакции. Как там транзакции ACCESS поведут себя в компании с ADO не могу сказать, но попробовать стоит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
16.08.2012, 16:36 | #6 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
намного быстрее будет
Код:
Код:
Skype : UASm1Le.
|
16.08.2012, 16:38 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
16.08.2012, 16:39 | #8 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
а клеить проще всего обычным запросом по типу
Код:
Skype : UASm1Le.
|
16.08.2012, 16:43 | #9 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 61
|
Sm1Le, а как я добавлю без цикла например за раз 100 строк?
дело в том что построчное одноразовое добавление не нужно. я на форме выбираю сколько и чего мне добавить, заполняю всё, потом нажимаю добавить и все данные должны разнестись, без цикла тут вообще никак не обойтись. есть идея создать копии таблиц нужных, и в них всё вносить, а потом в один прекрасный момент, ставить чтобы все копировалось в таблицы оригиналы, а копии очищать ну и потом опять быстро все разносить. или же еще удобней 2 одинаковых mdb пустой и заполненные, но как склеивать не знаю.
icq: 489-124-264; mail: invazia@mail.ru
|
16.08.2012, 16:49 | #10 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 61
|
Вообще само добавление достаточно быстро все разносит и вполне устраивает, но это при пустой или малой по объему табл. а когда 100 тыс строк, то добавляет очень долго. значит Insert сначала колдует над чемто, а потом только добавляет
icq: 489-124-264; mail: invazia@mail.ru
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
запрос SQL через ADO - ошибка Delphi7 | -Jack- | БД в Delphi | 3 | 12.07.2012 21:10 |
ADO .mdb и DateTimePicker | Never74 | БД в Delphi | 5 | 06.12.2011 05:58 |
unable to rename 'C:\ProgramFiles\Borland\Delphi7\Bi n\Delphi32.$$$' to 'C:\Program Files\Borland\Delphi7\ | KazBoy | Помощь студентам | 1 | 12.04.2011 18:07 |
mdb+ADO главная и подчиненные таблцы | masal77 | БД в Delphi | 2 | 03.04.2011 09:34 |
как подключится к базе база mdb если в bds2006 нет вкладки ADO ? | DeDoK | БД в Delphi | 4 | 15.09.2010 08:48 |