Re: Partitioning / constrain exlusion not working with %-operator

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Partitioning / constrain exlusion not working with %-operator
Дата
Msg-id 13552.1154349777@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Partitioning / constrain exlusion not working with %-operator  (Martin Lesser <ml-pgsql@bettercom.de>)
Ответы Re: Partitioning / constrain exlusion not working with %-operator  (Martin Lesser <ml-pgsql@bettercom.de>)
Список pgsql-performance
Martin Lesser <ml-pgsql@bettercom.de> writes:
> I try to partition a large table (~ 120 mio. rows) into 50 smaller
> tables but using the IMO immutable %-function constraint exclusion
> does not work as expected:

The constraint exclusion mechanism is not as bright as you think.
There are some very limited cases where it can make a deduction that
a WHERE clause implies a CHECK constraint that's not an exact textual
equivalent ... but all those cases have to do with related b-tree
operators, and % is not one.

It's usually better to use partitioning rules that have something to
do with the WHERE-clauses you'd be using anyway.  For instance, try
to partition on ranges of id1 instead of id1 % 50.  That works because
the CHECK clauses will be like "id1 >= x and id1 < y" and those
operators are btree-related to the "id1 = z" clauses you'll have in
the query.

            regards, tom lane

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

Предыдущее
От: Rod Taylor
Дата:
Сообщение: Re: sub select performance due to seq scans
Следующее
От: Jonathan Ballet
Дата:
Сообщение: Performances with new Intel Core* processors