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

п.1. разверни "where (point in (select point from points where uid=46 and point<=100000))", тока не забуди индекс создать.
п.2. если таблицы большие, то имеет смысл вынести подзапрос
п.3. повыдергать максимумы от point для каждого pid тоже лучче в отдельном поздапросе и ровно один раз.

получится что-то типа:


-- п.1 + п.2
select v.point, v.pid, v.[value]
into #tmp
from ValInt v
inner join points p on v.point = p.point  and uid=46 and p.point <= 100000

-- п.1 + п.3
select *
from #tmp a
inner join 
(
        select max(point) as point, pid
        from #tmp
        group by pid
) b on a.pid = b.pid and a.point = b.point
where a.pid in (20,145,555,9834,876235)
... << RSDN@Home 1.1 beta 1 >>

— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.