У меня есть такой стол.Как я могу оптимизировать нижеследующий запрос?
_id (integer)
event_name(varchar(20))
event_date(timestamp)
Вот несколько примеров данных, приведенных ниже.
ID event_date event_name
101 2013-04-24 18:33:37.694818 event_A
102 2013-04-24 20:34:37.000000 event_B
103 2013-04-24 20:40:37.000000 event_A
104 2013-04-25 01:00:00.694818 event_B
105 2013-04-25 12:00:15.694818 event_A
мне нужны данные из приведенных выше таблиц в формате ниже.
Date count_eventA count_eventB
2013-04-24 2 1
2013-04-25 1 1
следовательно, в основном необходимо количество каждого события на каждую дату.
Я попытался выполнить запрос для получения желаемого результата.
SELECT A.date1 AS Date ,
A.count1 AS count_eventA,
B.count2 AS count_eventB,
FROM
(SELECT count(event_name)AS count1,
event_date::date AS date1
FROM tblname
WHERE event_name='event_A'
GROUP BY (event_date::date))AS A
LEFT JOIN
(SELECT count(event_name)AS count1,
event_date::date AS date1
FROM tblname
WHERE event_name='event_B'
GROUP BY (event_date::date))AS B ON A.date1=B.date2
Может кто-нибудь предложить мне найти лучший и оптимизированный запрос? , или я следую хорошему подходу.
будет только два события? –
Здесь может быть более двух событий, но сейчас мне нужно заботиться только о двух событиях. – Anant
PostgreSQL версия? 'EXPLAIN ANALYZE'? См. Http://stackoverflow.com/tags/postgresql-performance/info –