|
|
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#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:52 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#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:12 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Может убрать цикл по таблицам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 20:50:32 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#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:17 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Вот так оптимальнее будет? ===================== Но что произойдет при отсутствии нужной таблицы в принимаемом файле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 20:59:54 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, не даёт вставлять уникальность ключа. То есть второй раз одна и таже запись не влезет. =============== Вот я болван.... точно..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:02:40 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Проверка на наличие таблицы нужна. Но после ее нахождения и переноса записей в TRANZAKTION_VSE_V_OFISE_TBL необходим выход из цикла. Ведь дальнейший анализ DB_OTCHETOV.TableDefs смысла не имеет - таблица уже найдена и обработана, зачем ее дальше искать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:04:03 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, да. но в следующем файле - опять нужно проверить наличие таблицы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:05:01 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58__Michelle, да. но в следующем файле - опять нужно проверить наличие таблицы....Ну да. Но это произойдет в рамках следующего прохода For Each f1 In fc при новом For Each TDF_OTCHETOV In DB_OTCHETOV.TableDefs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:07:14 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58, Это ведь не Ваш код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:09:58 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, тада, получается, код сокращать, или что-то менять не имеет смысла... и так всё оптимально. спасибо. понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:12:13 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, код мой, но написан более года назад. а сейчас появилось время для оптимизации длительных процессов и прочего... я его перетряхиваю, а тут что-то затупил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:14:32 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58, Нужен выход из For Each TDF_OTCHETOV In DB_OTCHETOV.TableDefs после обнаружения искомой таблицы и переноса записей. Иначе идет ненужный поиск среди оставшихся таблиц данной (очередной) базы. Нужен выход. Зря думаете, что "и так все оптимально". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:18:17 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, аааа..... точно. после переброса данных нужен выход из цикла поиска таблиц. Спасибо, верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:19:52 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
видимо так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:22:09 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Нет, конечно. Код: vbnet 1. И никаких меток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:28:35 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
__Michelle, Верно! ---------------- Отдыхать бывает полезно. (это я себе.) ======================= спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2016, 21:31:58 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#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:19 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Анатолий ( Киев ), Не совсем всё так. DB_OTCHETOV - это внешние базы данных, из которых принимаем данные. Код: vbnet 1. ============ Названия отчётов длинные, но во всех названиях имеется кусочек "OTCHET_OT", поэтому проверка названия файла именно такая: Код: vbnet 1. =============== Наличие таблицы "TRANZAKTION_V_OFIS_TBL" проверяем в файле, из которого принимаем данные, поэтому в каждом файле проверяем наличие таблицы. Код: vbnet 1. 2. ============ Dir - много раз подводил и от него пришлось отказаться в работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 15:54:55 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58Dir - много раз подводил и от него пришлось отказаться в работе А можно поподробнее, в чем подводил? Постоянно использую, пока не подводил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:13:07 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
MrShin, Поподробнее нельзя. Это было в прошлом веке и я уже не помню. С тех пор не использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:23:28 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58Наличие таблицы "TRANZAKTION_V_OFIS_TBL" проверяем в файле, из которого принимаем данные, поэтому в каждом файле проверяем наличие таблицы. Код: vbnet 1. 2. Да, не досмотрел. Но тогда так: Код: vbnet 1. 2. 3. 4. А можно и вовсе не проверять - просто выполнять запрос с перехватчиком ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 16:25:36 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
Анатолий ( Киев ), Можно с перехватчиком ошибки. Но тогда как понять какая именно ошибка произошла :-( Может случиться всякое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2016, 17:29:50 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
час58Но тогда как понять какая именно ошибка произошла По номеру ошибки. Можно перед выполнением запроса направить ошибки на отдельный обработчик ошибок, чтобы точно знать, что ошибка была в конкретном запросе, но и там номер ошибки понадобится для точной идентификации проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 07:05:29 |
|
||
|
Скорость загрузки данных из другой базы
|
|||
|---|---|---|---|
|
#18+
MrShin, можно, конечно... но, Код: vbnet 1. проверяем файл, проверяем есть ли там интересующая нас табличка, перебрасываем из неё данные. они или перебросились или нет. сообщаем пользователю всё норм или не норм. А всё остальное -- это уже моя забота. И юзеру пофигу номера ошибок и что там где там отвалилось. Код: vbnet 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 10:25:04 |
|
||
|
|

start [/forum/search_topic.php?author=Andrey99&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
659ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 384ms |
| total: | 1156ms |

| 0 / 0 |
