Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1099311691
edge
2004-11-01 15:21
2004.11.14
Создание формы.


4-1096918358
X-RayMan
2004-10-04 23:32
2004.11.14
Точность...


3-1097500706
AleXqwq
2004-10-11 17:18
2004.11.14
MySQL component for Delphi, not trial


11-1081939412
zoom
2004-04-14 14:43
2004.11.14
Что-то не так с размером....


14-1098989890
Alein
2004-10-28 22:58
2004.11.14
Интеграция драйверов в дистрибутив Windы




   Наверх