Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Запрос на выборку   Найти похожие ветки 

 
S@shka ©   (2004-10-12 17:16) [0]

Как действовать в таких случаях??
Есть набор данных
ID_C    VALUE_C    TIME_C
 50       1        12.04.04 11:51
 50       2        12.04.04 11:52
 53       0        12.04.04 11:08
 54       10       12.04.04 11:10
 54       8        12.04.04 11:58
-------------------------------------------------
Необходимо выбрать по каждому ID_C значение Value_C которому соответствует максимальное TIME_C
Вариант 1:
for
  select ID_C, max(TIME_C) from TABLE
  group by ID_C
  into :I, :T
do begin
    select VALUE_C from TABLE
    where ID_C = :I and TIME_C = :T
    suspend;
  end

Вариант 2:
  есть такая штука
   for
  select ID_C, max(TIME_C) from TABLE
  group by ID_C
  into :I, :T
  as cursor tmpcursor  // !!!!!
do begin
    select VALUE_C from TABLE
    where current of tmpcursor   // НО ПОХОЖЕ в SELECT использовать это нельзя :(((
    suspend;
  end

А как лучше такого рода задачи решаются ????
Заранее спасибо


 
Romkin ©   (2004-10-12 17:26) [1]

Первым вариантом :))
В идеале, если скорости не хватает, можно сделать денормализацию: сделать таблицу, уже содержащую нужные VALUE_C для каждого ID_C (оба поля - первичный ключ), и управлять ею триггерами на исходной таблице.
Вообще-то что-то мне говорит, что VALUE_C здесь лучше были бы не окончательным значением, а дельтой, чтобы вместо max считать sum


 
Johnmen ©   (2004-10-12 17:26) [2]

SELECT *
FROM Table T1
WHERE T1.TIME_C=(SELECT MAX(T2.TIME_C)
                FROM Table T2 WHERE T2.ID_C=T1.ID_C)


 
S@shka ©   (2004-10-12 23:20) [3]

To Johnmen
Это конечно да, но
на 10000 записей
при неидексированной таблице 100 000 000 чтений
в противовес варианту 1      117 000 чтений


 
Johnmen ©   (2004-10-12 23:56) [4]

>S@shka ©

"Ну что тебе сказать про Сахалин?" (c)

>Как действовать в таких случаях??
>А как лучше такого рода задачи решаются ????

Точно не так: "...неидексированной таблице..." !
И почему беспокоит кол-во чтений? Скорость? Т.е.борьба за неё с пом.ХП, а не индексов?
ЧуднО...:)



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
1-1098453965
kalishenko
2004-10-22 18:06
2004.11.14
QReport


1-1099332413
Alexander Rudenko
2004-11-01 21:06
2004.11.14
Как мне получить PDB файл для делфи-приложения


14-1099038151
}|{yk
2004-10-29 12:22
2004.11.14
Умберто Эко. Имя розы.


1-1098907717
Jolik
2004-10-28 00:08
2004.11.14
Как сделать в TListView...


3-1097640812
sapsi
2004-10-13 08:13
2004.11.14
Раскрашивание грида