Главная страница
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.062 c
14-1098780784
Труп Васи Доброго
2004-10-26 12:53
2004.11.14
Перевод чисел из dec в hex и bin


14-1099067284
Гаврила
2004-10-29 20:28
2004.11.14
Нужен банкир


3-1097958612
saNat
2004-10-17 00:30
2004.11.14
"Архивация" БД Access


1-1098877184
Pentium133
2004-10-27 15:39
2004.11.14
А вот проблема с TComboBox


3-1098041327
Sid
2004-10-17 23:28
2004.11.14
Ошибка в Ibase- readonly table