|
|
|
[хочу странного] row @operator@ ANY(ARRAY[rows,boxes])
|
|||
|---|---|---|---|
|
#18+
есть сильно партицированная по timestamp табличка, с индексами по 45 и более Гб. при передаче Код: sql 1. имеем лишнее сканирование партиций (их индексов) спасает Код: sql 1. где $array_id_stamp -- предвычисленный массив record[] (да, его нельзя объявить в plpgsql, но можно получить как поле записи). хочется, по аналогии, так же пропихнуть намек на партицию в конструкции вида Код: sql 1. OR Код: sql 1. или что--то в этом роде. индексы по (fld,stamp) есть на всех партициях. (начал смотреть как залудить свой оператор -- как-то все насчет row не ясно, а паковать его в свой тип -- индексов не увидать [за что борьба]) можно пошить довольно большой динамический OR из Код: sql 1. что чревато либо ошибкой 'too many range table entries' либо даже OEM киллером. (видимо на этапе разбора). + заведомо большим несократимым временем планирования. т.ч. требуются идеи. выкрутасы с unnest(($array_fld_stamp) ) легко пишутся но в планировании не помогают -- план [быстро] строится , но, даже с laterlal, -- без учета партиционных ограничений по $stamp. (т.е., судя по всему, выбор партиции не откладывается -- не может быть отложен). куда крестьянину подаццо ? есть у кого идеи ? можно пнуть совсем в другую сторону, если есть такая сторона. уточнение : предполагается, что запрос редкий (по заданным страницам индексов, как минимум) т.е. читается на холодную. Лишние партиции -- лишние дисковые чтения. много их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2016, 11:48 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=96&tid=1997412]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 354ms |

| 0 / 0 |
