Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.045 c
4-42315
Akvilon
2003-09-06 18:42
2003.11.13
SetWindowLong(hwnd, GWL_WNDPROC ...


3-40854
KSergey
2003-10-21 14:08
2003.11.13
Наследник DBGrid и обработка клавиш при активном InplaceEdit


1-41463
Alecs
2003-10-28 19:18
2003.11.13
Как поменять CharSet у TRadioGroup, TCheckBox и т.д.?


14-41959
Skier
2003-10-20 10:59
2003.11.13
Формула-1 в России ?


6-41781
DSA
2003-09-11 16:44
2003.11.13
Генерация POST сообщений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский