Здравствуйте, 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 >>

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