Тема: SQL: помогите с оптимизацией запроса
Здравствуйте !
Помогите с составлением запроса, смысл в следующем:
Есть таблица (software) в которой собрано более 100 тыс. записей следующего содержания:
Date - дата инвентаризации
arm - имя автоматизированного рабочего места
software - название установленного программного обеспечения.
Один и тот же АРМ может иметь несколько результатов инвентаризации ПО по датам, но не более одного результата в день.
Нужно составить такой запрос, чтобы выдавался список всего ПО и количество его установок на АРМах, но состоящих из результатов самой последней инвентаризации по каждому АРМу. Потому что ненужное ПО уже могли деинсталлировать.
Я сделал такой запрос:
select b.software, count(b.software) from software b where b.date in (select max(a.date) from software a where a.arm=b.arm group by a.arm) group by b.software
Запрос работает, но ужасно долго... подозреваю что нужно сделать через использование EXISTS, но никак не получается, не пойму почему... :-(