Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизПочему-то виснет.................................... Найти похожие ветки
← →
___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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c