Re: Оптимизиция запроса
От: Аноним  
Дата: 12.08.03 12:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>
WH>select *
WH>from
WH>(
WH>    select point, pid, [value]
WH>    from ValInt
WH>    where (point in (select point from points where uid=46 and point<=100000))
WH>)a
WH>where
WH>(
WH>    point in
WH>    (
WH>        select max(point)
WH>        from
WH>        (
WH>            select    point, pid
WH>            from ValInt
WH>            where (point in (select point from points where uid=46 and point<=100000))
WH>        )b
WH>        where    b.pid = a.pid
WH>    )
WH>)
WH>and (pid in (20,145,555,9834,876235))
WH>

WH>Но это медленно. И что самое противное время растет с увеличением размера базы.
WH>А когда много pid'ов план запроса превращается в страшного мутанта
Не совсем понял, что нужно получить, но судя по запросу догадываюсь что нужен group by.
Примерно так:
select ValInt.*
from
ValInt inner join
(
    select max(point) as point, pid
    from ValInt inner join points on ValInt.point=points.point
         where points.uid=46 and points.point<=100000 and ValInt.pid in (20,145,555,9834,876235)
         group by pid
) a on ValInt.point=a.point and ValInt.pid=a.pid
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.