|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Serguei Tarassov 2:5020/400 11 Jul 2001 13:20:03 To : All Subject : Re: Структура базы документов -------------------------------------------------------------------------------- Доброго дня! "Igor Savkin" <Igor.Savkin@p4.f16.n451.z2.fidonet.org> wrote in message news:994764928@p4.f16.n451.z2.ftn... > Временная таблица абсолютно не нужна. Такой запрос делается стандартным > select-ом: > > select T.Doc_ID, > T.FLOAT_VVALUE, > F1.STR_VALUE, > F2.INT_VALUE, > F3.MEMO_VALUE, ... > from ThisHugeTable T > LEFT OUTER JOIN ThisHugeTable F1 on F1.Doc_ID=T.Doc_ID and F1.FIELD_N=1 > LEFT OUTER JOIN ThisHugeTable F2 on F2.Doc_ID=T.Doc_ID and F2.FIELD_N=2 > LEFT OUTER JOIN ThisHugeTable F3 on F3.Doc_ID=T.Doc_ID and F3.FIELD_N=3 > ... > where T.Doc_ID=1 and T1.FIELD_N=0 Это просто "убойный" запрос для оптимизатора, если полей больше 4..5. Вот такой убогий запрос и то будет работать быстрее (делали на MS SQL): select T.Doc_ID, (select T1.float_value from ThisHugeTable T1 where T.Doc_ID = T1.Doc_ID and T1.FIELD_N = 1) as "FieldName1", (select T2.float_value from ThisHugeTable T2 where T.Doc_ID = T2.Doc_ID and T2.FIELD_N = 2) as "FieldName2", (select T3.float_value from ThisHugeTable T3 where T.Doc_ID = T3.Doc_ID and T3.FIELD_N = 3) as "FieldName3", ... from ThisHugeTable T where T.Doc_ID = 1 -- с уважением, Сергей Тарасов http://www.arbinada.com mailto:templar@arbinada.com --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/657739cfc88d.html, оценка из 5, голосов 10
|