powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу оптимизировать Update
8 сообщений из 8, страница 1 из 1
Не могу оптимизировать Update
    #39511617
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу оптимизировать Update:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Select Kod, npp, Ediz, Mater, Kolvo, Cena, Summa, Debet, Kredit, Primec, Statya_kr;
	from Schet2;
	INTO CURSOR atmp;
	Where Kod+npp = _key readw
INDEX on kod+npp TAG kod

Update Sch2_MTC;
	SET Ediz=atmp.Ediz, Mater=atmp.Mater, Kolvo=atmp.Kolvo, Cena=atmp.Cena,;
		Summa=atmp.Summa, Debet=atmp.Debet, Kredit=atmp.Kredit, Primec=atmp.Primec, Statya_kr=atmp.Statya_kr;
	from atmp;
	where sch2_mtc.Kod+sch2_mtc.npp = atmp.kod+atmp.npp



Выборка дает 1 запись, Update работает очень долго - более часа recc('sch2_mtc') ~ 2000000.
Если написать:
Код: sql
1.
2.
...from atmp;
	where sch2_mtc.Kod+sch2_mtc.npp = _key


работает менее секунды. Но так можно только для случая 1 записи:)

sys(3054) выдает:
Код: sql
1.
2.
3.
4.
5.
Update Sch2_MTC SET Ediz=atmp.Ediz, Mater=atmp.Mater, Kolvo=atmp.Kolvo, Cena=atmp.Cena, Summa=atmp.Summa, Debet=atmp.Debet, Kredit=atmp.Kredit, Primec=atmp.Primec, Statya_kr=atmp.Statya_kr from atmp where sch2_mtc.Kod+sch2_mtc.npp = atmp.kod+atmp.npp
Rushmore optimization level for intermediate result: none
Using index tag Delete to rushmore optimize table sch2_mtc
Rushmore optimization level for table sch2_mtc: full
Joining table sch2_mtc and intermediate result using index tag Kod



Sch2_mtc имеет индексы kod и kod+npp
Для atmp пробовал создавать индекс kod результат тот же.
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511631
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай индекс для Sch2_MTC
Код: sql
1.
INDEX on kod+npp TAG kod_npp


или если уже есть индекс по kod или npp
Код: sql
1.
where sch2_mtc.Kod = atmp.kod and sch2_mtc.npp = atmp.npp
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511635
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisINDEX on kod+npp TAG kod
После этого добавить
Код: sql
1.
set order to
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511668
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Сделай индекс для Sch2_MTC
Код: sql
1.
INDEX on kod+npp TAG kod_npp


Такой уже есть
Код: sql
1.
или если уже есть индекс по kod или npp


И по kod есть
Код: sql
1.
where sch2_mtc.Kod = atmp.kod and sch2_mtc.npp = atmp.npp


И это уже пробовал.

Не понимаю вот это:
Rushmore optimization level for intermediate result: none
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511714
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант попробовать where на join заменить, как у select.
Код: sql
1.
	from atmp join Sch2_MTC on sch2_mtc.Kod+sch2_mtc.npp = atmp.kod+atmp.npp


Не проверял, может не заработает.

Еще попробуй индекс не делать для atmp, т.к. тут создается два варианта выбора индекса (по atmp и по Sch2_MTC) и фокс выбирает неправильный.
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511724
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Update and Delete cannot outed join:)
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511740
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisDima T,
Update and Delete cannot outed join:)
Возможно. Я update редко использую:
Код: sql
1.
2.
3.
4.
5.
6.
7.
sele atmp
scan for IndexSeek(atmp.kod+atmp.npp, .T., 'Sch2_MTC', 'Kod_npp')
    if rlock('Sch2_MTC')
       repl in Sch2_MTC ...
       unlock in Sch2_MTC
   endif
endscan


Если ch2_mtc.Kod+sch2_mtc.npp неуникально, т.е. м.б. несколько записей, то добавить scan while
...
Рейтинг: 0 / 0
Не могу оптимизировать Update
    #39511744
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Хотел от Repl уйти:)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу оптимизировать Update
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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