|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Вот кусочек кода, где в определённой папке просматриваются файлы, находится mdb файл, и из него перебрасываются данные в нашу базу. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код работает оч быстро, всё нормально. Вопрос в другом... -------------------------------------------------------------------------- СПС ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 20:44 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Я решил оптимизировать процедуру и убрал, на мой взгляд лишний цикл - проверки наличия таблицы. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
И процедура стала очень долго работать буквально в десятки раз(на глаз). В чём подвох? Зачем этот цикл? И разве без него не должно работать быстрее? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 20:48 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Может убрать цикл по таблицам? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 20:50 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58Может убрать цикл по таблицам?Разумеется. Ведь очевидно, что во втором случае вот эта чсть Код: vbnet 1. 2. 3. 4. 5. 6.
выполняется столько раз, сколько всего таблиц в DB_OTCHETOV. Может, условие WHERE (((Year([PAY_DATA]))>=FUN_GOD_MINIMUM())) не дает вставлять записи многократно, иначе бы увидели, что стало бы с TRANZAKTION_VSE_V_OFISE_TBL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 20:59 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Вот так оптимальнее будет? ===================== Но что произойдет при отсутствии нужной таблицы в принимаемом файле? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 20:59 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, не даёт вставлять уникальность ключа. То есть второй раз одна и таже запись не влезет. =============== Вот я болван.... точно..... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:02 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Проверка на наличие таблицы нужна. Но после ее нахождения и переноса записей в TRANZAKTION_VSE_V_OFISE_TBL необходим выход из цикла. Ведь дальнейший анализ DB_OTCHETOV.TableDefs смысла не имеет - таблица уже найдена и обработана, зачем ее дальше искать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:04 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, да. но в следующем файле - опять нужно проверить наличие таблицы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:05 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58__Michelle, да. но в следующем файле - опять нужно проверить наличие таблицы....Ну да. Но это произойдет в рамках следующего прохода For Each f1 In fc при новом For Each TDF_OTCHETOV In DB_OTCHETOV.TableDefs. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:07 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58, Это ведь не Ваш код? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:09 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, тада, получается, код сокращать, или что-то менять не имеет смысла... и так всё оптимально. спасибо. понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:12 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, код мой, но написан более года назад. а сейчас появилось время для оптимизации длительных процессов и прочего... я его перетряхиваю, а тут что-то затупил... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:14 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58, Нужен выход из For Each TDF_OTCHETOV In DB_OTCHETOV.TableDefs после обнаружения искомой таблицы и переноса записей. Иначе идет ненужный поиск среди оставшихся таблиц данной (очередной) базы. Нужен выход. Зря думаете, что "и так все оптимально". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:18 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, аааа..... точно. после переброса данных нужен выход из цикла поиска таблиц. Спасибо, верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:19 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
видимо так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:22 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Нет, конечно. Код: vbnet 1.
И никаких меток. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:28 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
__Michelle, Верно! ---------------- Отдыхать бывает полезно. (это я себе.) ======================= спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 21:31 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
1. Проверить наличие таблицы проще так: Код: vbnet 1. 2. 3. 4.
Причем лучше сделать это один раз перед циклом поиска файла. 2. Set DB_OTCHETOV = OpenDatabase(FOLDER_OTCHETOV & "\" & f1.Name) Зачем вы открываете БД, если DB_OTCHETOV нигде не используете? 3. WHERE (((Year([PAY_DATA]))>=FUN_GOD_MINIMUM())) Если поле [PAY_DATA] индексировано, то лучше так: Код: sql 1.
Запрос будет работать быстрее 4. Не лучшее решение: DoCmd.SetWarnings False DoCmd.RunSQL "..." DoCmd.SetWarnings True Лучше CurrentDB.Execute "..." или CurrentProject.Connection.Execute "..." 5. Ну и напоследок... Код: vbnet 1. 2. 3. 4. 5.
Судя по всему используется объект FSO. Проще и с меньшим кол-вом букв эта задача решается родной функцией Dir. Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 10:18 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Не совсем всё так. DB_OTCHETOV - это внешние базы данных, из которых принимаем данные. Код: vbnet 1.
============ Названия отчётов длинные, но во всех названиях имеется кусочек "OTCHET_OT", поэтому проверка названия файла именно такая: Код: vbnet 1.
=============== Наличие таблицы "TRANZAKTION_V_OFIS_TBL" проверяем в файле, из которого принимаем данные, поэтому в каждом файле проверяем наличие таблицы. Код: vbnet 1. 2.
============ Dir - много раз подводил и от него пришлось отказаться в работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 15:54 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58Dir - много раз подводил и от него пришлось отказаться в работе А можно поподробнее, в чем подводил? Постоянно использую, пока не подводил. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 16:13 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
MrShin, Поподробнее нельзя. Это было в прошлом веке и я уже не помню. С тех пор не использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 16:23 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58Наличие таблицы "TRANZAKTION_V_OFIS_TBL" проверяем в файле, из которого принимаем данные, поэтому в каждом файле проверяем наличие таблицы. Код: vbnet 1. 2.
Да, не досмотрел. Но тогда так: Код: vbnet 1. 2. 3. 4.
А можно и вовсе не проверять - просто выполнять запрос с перехватчиком ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 16:25 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Можно с перехватчиком ошибки. Но тогда как понять какая именно ошибка произошла :-( Может случиться всякое... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2016, 17:29 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
час58Но тогда как понять какая именно ошибка произошла По номеру ошибки. Можно перед выполнением запроса направить ошибки на отдельный обработчик ошибок, чтобы точно знать, что ошибка была в конкретном запросе, но и там номер ошибки понадобится для точной идентификации проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 07:05 |
|
Скорость загрузки данных из другой базы
|
|||
---|---|---|---|
#18+
MrShin, можно, конечно... но, Код: vbnet 1.
проверяем файл, проверяем есть ли там интересующая нас табличка, перебрасываем из неё данные. они или перебросились или нет. сообщаем пользователю всё норм или не норм. А всё остальное -- это уже моя забота. И юзеру пофигу номера ошибок и что там где там отвалилось. Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 10:25 |
|
|
start [/forum/topic.php?fid=45&msg=39299854&tid=1613215]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 136ms |
0 / 0 |