Главная страница
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
14-6688
NetBreaker666
2003-03-18 22:07
2003.04.03
Каким образом создать Popup меню в стиле WinXP


14-6675
sapsi
2003-03-18 08:24
2003.04.03
Отношение к новым


1-6573
stray_XXX
2003-03-21 18:51
2003.04.03
Определения пересечения двух кривых Безье


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


4-6854
Nick_N_A
2003-02-04 07:05
2003.04.03
HBitMap & HDC, создание Bitmap c буфером данных изображения