Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
Вот такой у меня вопрос к специалистам: Необходимо пробежаться по всем записям таблицы и в соответствии со значением первого поля поставить нужное значение во второе поле этой же записи (вычисления примитивные). Я это делаю так: Set rst = tdf.OpenRecordset(dbOpenTable) rst.MoveFirst Do Until rst.EOF rst.Edit ' Rashet - делает небольшие вычисления и получает новое значение rst.Fields("Field2") = Rashet(rst.Fields("Field2")) rst.Update rst.MoveNext Loop Проблема в том, что таблица содержит около 300 000 записей и на моем рабочем компе (Celeron 466, 128 Mb, Win98) все это действие занимает около 2 часов. Действие надо будет выполнять ежедневно и хотелось бы по максимуму сократить время обработки. В связис этим подскажите как лучше это сделать, может быстрее будет запрос на изменение данных или еще какие-нибудь хитрости есть, чтобы максимально ускорить процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 13:02 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
Делай запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 13:37 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
запрос update в конструкторе.... очень простенько ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 14:19 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
Кроме того, что это надо делать запросом, ещё надо максимально соптимизировать функцию Rashet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 14:33 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
у меня Access ХР. Сначала был 97, потом 2000. 2000 требовал переделку под свой новый 2000 формат, а ХР с 2000 - нет. Но однажды я засек, что его можно сохранить под 2002 формат. Сделал и ... разница в быстродействии заметная (весьма). Но база пухнет только так (даже если меняешь программный код), часто нужно зажимать (1/день). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 14:50 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
Ок. Спасибо за советы, попробую сделать и сравнить, что получится - сообщу (если кому-нибудь будет интересно). Функция Rashet по сути своей состоит из одного (но большого) Select case, в соответствии с попаданием в определенные интервалы значения поля Field1, выбирается один из 2 вариантов для поля Field2 - ну, вообщем, полный примитив, хоть и здоровый. - Просто я где-то читал, что оператор Select case работает быстрее, чем If Then в таких случаях. Так что, как еще можно оптимизировать функцию Rashet не представляю...... :-) P.S. В примере была небольшая ошибка, следует читать: rst.Fields("Field2") = Rashet(rst.Fields("Field1")) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 15:31 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
А может, попробовать поместить этот select ... case в запрос через IIF ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 16:00 |
|
||
|
Как быстрее добавить данные в таблицу...
|
|||
|---|---|---|---|
|
#18+
Ок, попробую, а ни чего, что SQL запрос будет так в 20-25 строчек.... :-( ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2003, 17:27 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1682557]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 316ms |

| 0 / 0 |
