Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Почему-то виснет....................................   Найти похожие ветки 

 
___Nikolay ©   (2003-10-21 11:21) [0]

Таблица T1
Поле1 CODE CHAR(20)
Поле2 NVALUE NUMERIC(15,2) <- во всех записях значение 0

Таблица T2
Поле1 CODE CHAR(20)
Поле2 NVALUE NUMERIC(15,2) <- во всех записях значение <> 0

Нужно, обновить значения поля NVALUE таблицы T1,
заменив их на значения одноименного поля таблицы T2,
где значения полей CODE обоих таблиц совпадает

*T1*
/->NVALUE (где T2.CODE = T1.CODE)
|
| *T2*
`- NVALUE

Пишу такую процедурку:

CREATE PROCEDURE TEST_FILL
AS
DECLARE VARIABLE CODE CHAR(20);
DECLARE VARIABLE NVALUE NUMERIC(15,2);
begin
for
select CODE, NVALUE from T2
into :CODE, :NVALUE
do
begin
update T1
set NVALUE = :NVALUE
where CODE = :CODE;
end
end


Если записей в таблицах немного - отрабатывает нормально,
А если записей, например, 10000 - зависает..

В режиме отладки при первой же итерации код


select CODE, NVALUE from T2
into :CODE, :NVALUE


довольно долго выполняется, а при выполнении


update T1
set NVALUE = :NVALUE
where CODE = :CODE;


приложение вообще зависает...

HELP! ЧТО Я НЕПРАВИЛЬНО ДЕЛАЮ?


 
Vlad ©   (2003-10-21 11:25) [1]

Индекс в T1 по полю CODE есть ?


 
Alex_Bredin ©   (2003-10-21 11:28) [2]

попробуй так

update T1
set nvalue=(select distinct nvalue from t2 where t1.code=t2.code)


 
Zacho ©   (2003-10-21 11:31) [3]


> Alex_Bredin © (21.10.03 11:28) [2]

Так будет гораздо медленнее, чем ХП.


 
Alex_Bredin ©   (2003-10-21 11:45) [4]

текст хп верный...
может поменять имена переменных?
они же дублируют имена исп-ся полей


 
___Nikolay ©   (2003-10-21 12:14) [5]

2 Vlad ©
Индекса нет

2 Alex_Bredin ©
Попробую!
Имена менял - не помогает


 
Vlad ©   (2003-10-21 12:32) [6]

2 Vlad ©
Индекса нет

Тогда желаю успехов :-/


 
Zacho ©   (2003-10-21 12:41) [7]


> ___Nikolay © (21.10.03 12:14) [5]
> 2 Vlad ©
> Индекса нет

Вот все из-за этого. Оно не виснет, а просто работает о-о-очень медленно.


 
___Nikolay ©   (2003-10-22 06:24) [8]

Пасиб!


 
Zacho ©   (2003-10-22 08:27) [9]

Учти: для того, чтобы работало действительно быстро, индекс на поле CODE должен быть в обоих таблицах. И вообще, у меня сильное подозрение, что в одной из таблиц CODE должно быть первичным ключем, а во второй, соответственно, внешним. Тогда дополнительно индексы создавать не надо.


 
Zacho ©   (2003-10-22 08:46) [10]

Да, что-то проглючил :( При использовании этой ХП индекс по CODE в таблице Т2 прироста производительности не даст.



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-41607
Alex-21
2003-10-13 22:41
2003.11.13
SynEdit


1-41306
TUser
2003-10-31 10:57
2003.11.13
Работа с изображениями


1-41391
dn
2003-10-26 21:18
2003.11.13
TStringGrid и ASCII


6-41871
Кирил
2003-09-09 20:57
2003.11.13
Помогите, найти ошибку


14-42017
R
2003-10-17 02:43
2003.11.13
StringGrid с цветом