powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / медленный UPDATE
6 сообщений из 6, страница 1 из 1
медленный UPDATE
    #32296002
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такая: есть фоксовская БД, связанная с таблицами SQL server, с помощью remote views.
С внешнего источника поступают данные, я их в курсоре обрабатываю(привожу к нужному виду) и помещаю в remote views. Если такие данные во view уже есть то обновляем их, если нет то вставляем новые
UPDATE table1 SET par1 =TMP->par1 , ;
par2 =TMP->par2 ;
WHERE table1->A =TMP->A .AND. ;
table1->B =TMP->B .AND. ;
table1->C =TMP->C .AND. ;
table1->D =TMP->D .AND. ;
table1->E =prefix
IF _TALLY==0
INSERT INTO table1 ...
Раньше когда обновления сразу шли в локальную таблицу(т.е. без remote view) все работало моментально, сейчас это занимает около 30 секунд. В опросе три такие процедуры с тремя таблицами(таблицы примерно
по 6000 записей, но будут намного больше, т.е. время запроса увеличится на порядок)
КАК БЫТЬ?
Примечание: На SQL server есть индексы по сравниваемым полям.
...
Рейтинг: 0 / 0
медленный UPDATE
    #32296049
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может надо пересмотреть работу с mssql, и почаще пользоваться sqlexec() и tableupdate, может я чего то не понимаю, но для не справочных таблиц операции сохранения/выборки писать ручками, а .DBC, использовать как шаблон для рисования форм
...
Рейтинг: 0 / 0
медленный UPDATE
    #32296360
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>На SQL server есть индексы по сравниваемым полям.
А на RemoteView есть индексы по сравниваемым полям?
Что тормозит - Update View или Tableupdate('View')?
...
Рейтинг: 0 / 0
медленный UPDATE
    #32297372
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2brahew: table1 находится на sql server, т.е. обращение к ней присходит через
remote view, а TMP - cursor временная таблица. Так что я не вижу как можно использовать sqlexec()? На сколько я понимаю на sql server TMP не увидеть.
2Andrew_Pr:
>А на RemoteView есть индексы по сравниваемым полям?
Нет, т.е. ты предлагаешь создавать временные индексы перед UPDATE?
Думаешь поможет?
Кстати, вопрос ко всем: какие лучше индексы - составные по всем сравниваемым колонкам или несколько по разным колонкам?
и вообще выскажите свое мнение по этому поводу.
...
Рейтинг: 0 / 0
медленный UPDATE
    #32299277
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сформируй Update для mssql, и пошли его на сервер через sqlexec(), а на эту строку поставь Tableupdate()
...
Рейтинг: 0 / 0
медленный UPDATE
    #32300522
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты update RemoteView, происходит два процесса:
1) View изменяется на основе данных из твоей tmp-таблицы
2) таблица в SQL изменятся на основе данных твоего View.
Если у тебя построчная буферизация view, то эти два процесса происходят параллельно. Если табличная буферизация - то последовательно. Так какой из этих процессов тормозит? Индексы на SQL-таблице никакого влияния на скорость 1-го процесса не оказывают. для него важны индексы на Remoteview и твою tmp-таблицу. Но учти, сама индексация view и tmp тоже ведь займет какое-то время. поэтому если Update у тебя выполняется 1 раз и после этого view и tmp закрываются, то общая скорость вырастет наверное не на много.
Кроме того, при табличной буферизации update должн работать быстрее, чем при построчной .
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / медленный UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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