Запросы к одной универсальной таблицы телефонов

Субина Ксюша
Дата: 11.05.2012 10:34:29
Для одного клиента может быть несколько типов телефонов:
1.мобильный личный, как правило два оператора.
2.рабочий стационарный.
3.домашний, может быть два (1 - по адресу регистрации, 2 - по реальному адресу).
4.служебный (CDMA, или другой мобильный оператор).
5.факс.

Они все загружаются через универсальную процедуру. Но загрузка идет медленно.
На текущий момент примерно 59600 записей. Все записи телефонов одного вида,
типа +380501806020.
Даю структуру:

"TEL_NAME" NUMERIC(11, 0) NOT NULL,
"TEL_CODE" INTEGER,
"TEL_LAST" TIMESTAMP DEFAULT 'NOW',
PRIMARY KEY ("TEL_NAME")

Вопрос как правильно делать загрузку из таблицы телефонов ?
Одним запросом нельзя, ведь не все типы телефонов могут быть у клиента.
Микросекунда
Дата: 11.05.2012 10:39:23
Субина Ксюша пишет:

СК> Вопрос как правильно делать загрузку из таблицы телефонов ?

Смотря, что тебе нужно. По идее, и select * from <ТаблицаТелефонов> подойдет.

И вообще - что такое "загрузка из таблицы телефонов" ?

Posted via ActualForum NNTP Server 1.5

Gwa
Дата: 11.05.2012 10:48:57
Субина Ксюша,
логичнее было бы "TEL_CODE" назначить primary key
Субина Ксюша
Дата: 11.05.2012 11:02:41
Микросекунда
Субина Ксюша пишет:

СК> Вопрос как правильно делать загрузку из таблицы телефонов ?

Смотря, что тебе нужно. По идее, и select * from <ТаблицаТелефонов> подойдет.

И вообще - что такое "загрузка из таблицы телефонов" ?

Да я знаю как это делать. Вопрос как быстрее ?
Субина Ксюша
Дата: 11.05.2012 11:05:45
Gwa
Субина Ксюша,
логичнее было бы "TEL_CODE" назначить primary key


Поле TEL_CODE заполняется генератором, вот значение его и загружается в главную таблицу.
Субина Ксюша
Дата: 11.05.2012 11:19:46
Микросекунда
Субина Ксюша пишет:

СК> Вопрос как правильно делать загрузку из таблицы телефонов ?

Смотря, что тебе нужно. По идее, и select * from <ТаблицаТелефонов> подойдет.

И вообще - что такое "загрузка из таблицы телефонов" ?

Приведу блок уливерсальной процедуры загрузки:

Datamodule.IbQuery_Seek.Close;
DataModule.IbQuery_Seek.ParamByName('Var_Name').AsInteger:=
DataModule.IbQuery_Man.FieldByName('Man_Tel').asInteger;
Datamodule.IbQuery_Seek.Open;
if Datamodule.IbQuery_Seek.RecordCount>0 then
EdtMan_Tel.Text:= DataModule.IbQuery_Seek.FieldByName('Tel_Name').asString;
else
EdtMan_Tel.Text:='';
m7m
Дата: 11.05.2012 11:29:39
Субина Ксюша,
запрос покажи который в IbQuery_Seek
Субина Ксюша
Дата: 11.05.2012 11:38:41
m7m
Субина Ксюша,
запрос покажи который в IbQuery_Seek



select tel_namer from tel_list
where tel_code=:Var_Name
stelvic
Дата: 11.05.2012 11:40:54
Субина Ксюша

select tel_namer from tel_list
where tel_code=:Var_Name

Индекс по TEL_CODE сделайте.
Dimitry Sibiryakov
Дата: 11.05.2012 11:41:24

Субина Ксюша
Одним запросом нельзя, ведь не все типы телефонов могут быть у клиента.

И чо? Один запрос как раз и выберет все телефоны клиента разом. Очень быстро.

Кстати, где в приведённой структуре ссылка на клиента?

Posted via ActualForum NNTP Server 1.5