random-ный способ построения плана, что ли...

whirlwind

TDD infected, paranoid
random-ный способ построения плана, что ли...

Толи я заработался, то ли в пг шаман вселился :D

адын
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
----------------------------------------------------------------------------------------------------
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)
...vacuum

два
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)
найдите два отличия.

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

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: whirlwind
Ну как решается понятно, вопрос собсна почему так бывает и часто ли пг таким образом тупит.
Тупит тут некоторым образом не пг... Смысл имеет сравнивать вывод не EXPLAIN, а EXPLAIN ANALYZE, а то при сбитой статистике могут быть очень быстрые в теории планы, к-рые в реальности работают медленнее.

PS: вставляй планы в [ code ] [ / code ], а то читать неудобно.
 

whirlwind

TDD infected, paranoid
Ясно, спасибо, учту.

PS. а у мну наоборот code крупным шрифтом получается почемуто и разрарабанивает пост. А переносы, это потому что из вывода консоли скопированы, а не в файл направлены. Повторить же не удалось бы, вот и пришлось изголицо :)
 
Сверху