pgsql: Fix cost estimation for indexscans on expensive indexed expressi

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix cost estimation for indexscans on expensive indexed expressi
Дата
Msg-id E1YT0qK-0000Xi-Hg@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix cost estimation for indexscans on expensive indexed expressions.

genericcostestimate() and friends used the cost of the entire indexqual
expressions as the charge for initial evaluation of indexscan arguments.
But of course the index column is not evaluated, only the other side
of the qual expression, so this was a bad overestimate if the index
column was an expensive expression.

To fix, refactor the logic in this area so that there's a single routine
charged with deconstructing index quals and figuring out what is the index
column and what is the comparison expression.  This is more or less free in
the case of btree indexes, since btcostestimate() was doing equivalent
deconstruction already.  It probably adds a bit of new overhead in the cases
of other index types, but not a lot.  (In the case of GIN I think I saved
something by getting rid of code that wasn't aware that the index column
associations were already available "for free".)

Per recent gripe from Jeff Janes.

Arguably this is a bug fix, but I'm hesitant to back-patch because of the
possibility of destabilizing plan choices that people may be happy with.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/b9896198cfbc1b0cd0c631d2af72ffe34bd4c7e5

Modified Files
--------------
src/backend/utils/adt/selfuncs.c |  391 ++++++++++++++++++++++++--------------
1 file changed, 244 insertions(+), 147 deletions(-)


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

Предыдущее
От: Fujii Masao
Дата:
Сообщение: pgsql: Fix an obsolete reference to SnapshotNow in comment.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Use standard casting mechanism to convert types in plpgsql, when