Re: [GENERAL] Planner statistics usage for composite type
От | Tom Lane |
---|---|
Тема | Re: [GENERAL] Planner statistics usage for composite type |
Дата | |
Msg-id | 27356.1500478668@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | [GENERAL] Planner statistics usage for composite type (Dmitry Lazurkin <dilaz03@gmail.com>) |
Ответы |
Re: [GENERAL] Planner statistics usage for composite type
Re: [GENERAL] Planner statistics usage for composite type |
Список | pgsql-general |
Dmitry Lazurkin <dilaz03@gmail.com> writes: > I am trying to find workaround for cross-column statistics. > ... > Worn estimate. Planner doesn't use statistics. In code I see usage of > function scalargtsel which returns default selectivity because > ROW('tag1', 0.9)::tag_sim is not Const. Yeah, that's because eval_const_expressions doesn't know how to fold a constant RowExpr to a simple Const. I have a patch laying about someplace to improve that, but I keep forgetting about it until we're in beta phase :-(. In the meantime you could perhaps do the folding by hand: regression=# EXPLAIN ANALYZE SELECT * FROM tags WHERE ROW(t, s)::tag_sim >= '(tag1,0.9)'::tag_sim AND ROW(t, s)::tag_sim <= '(tag1,1.0)'::tag_sim; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------- Index Scan using tags_composite on tags (cost=0.29..8.30 rows=1 width=13) (actual time=0.051..0.051 rows=0 loops=1) Index Cond: ((ROW(t, s)::tag_sim >= '(tag1,0.9)'::tag_sim) AND (ROW(t, s)::tag_sim <= '(tag1,1)'::tag_sim)) Planning time: 0.230 ms Execution time: 0.110 ms (4 rows) regards, tom lane
В списке pgsql-general по дате отправления: