Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
8-6629
Михаил
2002-12-29 16:52
2003.04.03
3Д ГРАФИКА


1-6502
DenisLK
2003-03-24 15:54
2003.04.03
qtintf.dll ???


1-6587
вгифт
2003-03-22 08:03
2003.04.03
Текст


8-6615
Nhu
2002-12-24 22:14
2003.04.03
как полность вырубить звук? как его вкл??


1-6448
Chlavik
2003-03-20 22:25
2003.04.03
Handle главного окна проги....




   Наверх