how to remove a for-loop from programming language and put it into the query?

Поиск
Список
Период
Сортировка
От Pedro Zorzenon Neto
Тема how to remove a for-loop from programming language and put it into the query?
Дата
Msg-id 4C31F0C5.7060402@mandic.com.br
обсуждение исходный текст
Ответы Re: how to remove a for-loop from programming language and put it into the query?  (Thom Brown <thombrown@gmail.com>)
Re: how to remove a for-loop from programming language and put it into the query?  (Sam Mason <sam@samason.me.uk>)
Re: how to remove a for-loop from programming language and put it into the query?  (Sim Zacks <sim@compulab.co.il>)
Список pgsql-general
Hello!

Can someone help me to develop a query?

Things are more complex than this example, but with this simple example
I can explain what I need and get an answer.

Table: "diagnose_logs"
Fields:
  - id serial
  - hardware_id integer
  - diag_value integer
  - ts timestamp

So I collect many diagnose information from many hardwares.

So, I need to get a report of all diagnostics of all hardware on
december 25th.

(external programming language)
for ($i = 1; $i < 500; $i++) {
  // return me the "most recent" diag_value from a hardware_id $i
  // at the desired timestamp
  runquery("select diag_value from diagnose_logs where ts <= '2009-12-25
23:59:59' and hardware_id = $i order by ts desc limit 1");
}

Currently I have an index on diagnose_logs(ts,hardware_id)
I have 3 milion registers of 500 different hardware_id.

The time to run 500 times this query is long... about 1 minute. When I
need a montly day-by-day report of 500 hardwares, it takes about half an
hour.

can I turn this for-loop into a single query to run in postgres?

Thanks,
Pedro


В списке pgsql-general по дате отправления:

Предыдущее
От:
Дата:
Сообщение: Re: Out of memory on update of a single column table containg just one row.
Следующее
От: Thom Brown
Дата:
Сообщение: Re: how to remove a for-loop from programming language and put it into the query?