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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
4-6841
Timon
2003-02-04 23:29
2003.04.03
ФЛОППИ ДИСК


1-6492
Worm
2003-03-24 14:41
2003.04.03
Отчет в Rave


1-6549
oomneeq
2003-03-21 11:46
2003.04.03
Лог процесса компиляции.


7-6807
crazyprogman
2003-02-10 02:23
2003.04.03
LIstView


7-6811
GrBob
2003-02-07 21:07
2003.04.03
Запрет доступа к часам?