Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Оптимизация кода   Найти похожие ветки 

 
sterran   (2003-03-17 12:32) [0]

Привет всем. Уважаемые мастера помогите с оптимизацией кода. У меня есть две таблицы первая содержит два поля: Номер телефона и почтовое отделение (данные обеих полей уже заполнены), вторая также содержит Номер телефона и почтовое отделение (поле номер телефона заполнен, а вот отделение связи необходимо вытощить с первой таблице), т.е. две таблицы необходимо как бы синхронизировать. Я поступаю следующим образом
...
table2.first;
while not table2.eof do begin
if table1.locate("PHONE",table2.FieldByName("PHONE").AsString.[loCaseInsensitive, loPartialKey])
then
begin
table2.Edit;
table2.FieldByName("POST").AsString: = table1.FieldByName("POST").AsString;
table2.Post;
end;
table2.Next;
end;
...


вроде бы нормально, вот только если таблицы содержать по 50000 записей, время обработки увеличивается до 20 мин и более, может кто подскажает что-нибудь по умнее
За ранее благодарен.


 
stone   (2003-03-17 12:37) [1]

Для таких целей существует связь Master-Detail, смотри MasterSource


 
myor   (2003-03-17 12:37) [2]

похоже на разовую задачу (перенести значения из оюной таблицы в другую). тогда, может, лучше:

update table2
set postoffice=(select postoffice
from table1
where phone=table2.phone);



 
Johnmen   (2003-03-17 12:40) [3]

UPDATE Table2 T2 SET T2.почтовое отделение=
(SELECT T1.почтовое отделение WHERE
T1.Номер телефона=T2.Номер телефона FROM Table1 T1)


 
Anatoly Podgoretsky   (2003-03-17 12:40) [4]

Надо сделать master-detail связь по полю PHONE и надобность в table1.locate полностью пропадет. В жтом случае вместо декартового произведения, будет простое линейное while not table2.eof do begin



 
sterran   (2003-03-17 12:42) [5]

Все понял спасибо



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

Форум: "Базы";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
1-6484
kingdom2000
2003-03-24 14:48
2003.04.03
орфографя в TRichEdit


14-6711
Evgeny
2003-03-15 14:57
2003.04.03
страничка HTML


14-6725
cok
2003-03-15 16:50
2003.04.03
Пароли


14-6770
unregistered
2003-03-17 15:57
2003.04.03
int 21h


3-6353
Explorer
2003-03-14 09:47
2003.04.03
Oracle





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский