powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Копирование информации с 1-й таблицы в другую по условию
11 сообщений из 11, страница 1 из 1
Копирование информации с 1-й таблицы в другую по условию
    #35146685
Vitalь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение файл-сервер
Есть таблица на сервере, порядка 100000 записей
Нужно скопировать в таблицу находящуюся на клиенте.

Как ускорить процесс копирование (добавление новых записей) записей с сервера на локал с условиями ?

Пример кода:
*klizd2=tag-->oi наход. на сервере
*qspsert локал.

SELECT klizd2
GO TOP
DO WHILE !EOF()
SCATTER FIELDS ki, oi, ni, kolmest, kolmestm, ves, vesn, upak, edizm, prsertif TO arrSpec
SELECT qspsert
LOCATE FOR kdse = arrSpec(1)
IF !FOUND()
INSERT INTO qspsert (kdse, oi_redakt, ni_redakt, kol, kolmest, ves, vesn, upak, advaldol, ed_izmeren, sertifikat, priznak_ud,;
otkuda_sp);
VALUES (arrSpec(1), arrSpec(2), arrSpec(3), IIF(arrSpec[4] # 0, arrSpec[4], 1),;
IIF(arrSpec[5] # 0, arrSpec[5], 1), arrSpec(6), arrSpec(7), IIF(VAL(arrSpec[8]) # 0,;
VAL(arrSpec[8]), 4), 3, IIF(VAL(arrSpec[9]) # 0, VAL(arrSpec[9]), 7), VAL(arrSpec[10]), 0, 4)
ENDIF
SELECT klizd2
SKIP
ENDDO
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35146755
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
insert into qspsert select * from klizd2 where ki not in (select kdse from qspsert)
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147036
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблица не клиенте уже есть, то можнои чрезе APPEND FROM ... FOR ...
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147063
Vitalь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... а что быстрее выполниться insert into в цикле do while или append from ?
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147154
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна команда выполняется быстрее цикла
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147208
Vitalь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строки
1
2
3
...
100000

нужная инфа находится в диапазоне 54000-70000
перехожу на нужную строчку:
select klizd
if seek(переменная)
do whele условие & !eof()
scatt to array
insert into temp
select klizd
skip
endif

или этот вариант
select temp
append from klizd fields for условие

append from по идеи должен просмотреть все записи таблице

так что быстрее ?
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147310
Vitalьтак что быстрее ?
Если б что-то было однозначно и всегда быстрее, то все быпользовались и в языке бы остался только один этот самый быстрый вариант. Но так как вариантов таки несколько больше, то можно сделать вывод о невозможности определить однозначно самый быстрый способ. Скорость зависит от нескольких, в том числе и противоречащих друг другу условий, и как раз Ваша задача как программиста найти оптимальный вариант именно для Ваших условий, а не для сферического коня в вакууме.
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35147322
lexusXXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется лучше селектом выбрать необходимые данные в курсор, а затем через APPEND FROM добавить в нужную таблицу все разом
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35148115
scelo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне кажется лучше селектом выбрать необходимые данные в курсор, а затем через APPEND FROM добавить в нужную таблицу все разом

и селект не нужен: APPEND FROM по условию...
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35148215
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбираешь новые в курсор (желательно индекс иметь по qspsert.kdse):
Код: plaintext
select klizd2.*, qspsert.kdse from klizd2 left join qspsert on klizd2.ki = qspsert.kdse having qspsert.kdse is null into cursor tadd
Дальше можешь как было оставить. Массив не обязательно, можно напрямую к полям обращаться:
Код: plaintext
1.
2.
3.
4.
5.
sele tadd
scan
   INSERT INTO qspsert (kdse, oi_redakt, ni_redakt, kol, kolmest, ves, vesn, upak, advaldol, ed_izmeren, sertifikat, priznak_ud,;
     otkuda_sp);
       VALUES (tadd.ki, tadd.oi, tadd.ni, IIF(tadd.kolmest #  0 , tadd.kolmest,  1 ) ...)
endscan
...
Рейтинг: 0 / 0
Копирование информации с 1-й таблицы в другую по условию
    #35148262
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И курсоры временные не забывай закрывать:
Код: plaintext
use in tadd
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Копирование информации с 1-й таблицы в другую по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]