Главная страница
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.015 c
14-6784
VID
2003-03-17 15:28
2003.04.03
Компонент для работы с Excel


14-6789
kostya2000
2003-03-16 23:36
2003.04.03
Отслеживаеться ли сканирование портов!?


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


3-6416
Suharew
2003-03-16 21:21
2003.04.03
Как удалить все записи таблицы с помощью SQL запроса


14-6728
CinCinNut
2003-03-16 14:54
2003.04.03
Странное письмо