whirlwind
TDD infected, paranoid
random-ный способ построения плана, что ли...
Толи я заработался, то ли в пг шаман вселился
адын
два
Ну как решается понятно, вопрос собсна почему так бывает и часто ли пг таким образом тупит. А то както не радует ормовые запросы сплошняком перекрывать.
Толи я заработался, то ли в пг шаман вселился
адын
...vacuumftpsearch=# explain select timepos,count(*) as num from tab_lexindex left join tab_file on (tab_file
.id = ref) where lex in ('games','anime') and timepos>='2007-04-19' group by timepos having count(*)
> 2 order by timepos;
QUERY PLAN
----------------------------------------------------------------------------------------------------
GroupAggregate (cost=0.00..518.65 rows=4 width=8)
Filter: (count(*) > 2)
-> Nested Loop (cost=0.00..518.30 rows=42 width=8)
-> Index Scan using tab_file_timeposidx on tab_file (cost=0.00..274.41 rows=75 width=12)
Index Cond: (timepos >= '2007-04-19 00:00:00'::timestamp without time zone)
-> Index Scan using tab_lexindex_refidx on tab_lexindex (cost=0.00..3.24 rows=1 width=4)
Index Cond: ("outer".id = tab_lexindex.ref)
Filter: (((lex)::text = 'games'::text) OR ((lex)::text = 'anime'::text))
(8 rows)
два
найдите два отличия.ftpsearch=# explain select timepos,count(*) as num from tab_lexindex left join tab_file on (tab_file
.id = ref) where lex in ('games','anime') and timepos>='2007-04-19' group by timepos having count(*)
> 2 order by timepos;
QUERY PLAN
----------------------------------------------------------------------------------------------------
------
Sort (cost=2742.66..2742.72 rows=24 width=8)
Sort Key: tab_file.timepos
-> HashAggregate (cost=2741.93..2742.11 rows=24 width=8)
Filter: (count(*) > 2)
-> Nested Loop (cost=0.00..2740.21 rows=229 width=8)
-> Seq Scan on tab_file (cost=0.00..1095.21 rows=509 width=12)
Filter: (timepos >= '2007-04-19 00:00:00'::timestamp without time zone)
-> Index Scan using tab_lexindex_refidx on tab_lexindex (cost=0.00..3.22 rows=1 wid
th=4)
Index Cond: ("outer".id = tab_lexindex.ref)
Filter: (((lex)::text = 'games'::text) OR ((lex)::text = 'anime'::text))
(10 rows)
Ну как решается понятно, вопрос собсна почему так бывает и часто ли пг таким образом тупит. А то както не радует ормовые запросы сплошняком перекрывать.