powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / [хочу странного] row @operator@ ANY(ARRAY[rows,boxes])
1 сообщений из 1, страница 1 из 1
[хочу странного] row @operator@ ANY(ARRAY[rows,boxes])
    #39177527
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть сильно партицированная по timestamp табличка, с индексами по 45 и более Гб.
при передаче
Код: sql
1.
id = ANY ($array_id) 


имеем лишнее сканирование партиций (их индексов)
спасает
Код: sql
1.
(id,stamp) = ANY ($array_id_stamp)


где $array_id_stamp -- предвычисленный массив record[] (да, его нельзя объявить в plpgsql, но можно получить как поле записи).

хочется, по аналогии, так же пропихнуть намек на партицию в конструкции вида
Код: sql
1.
(fld,stamp) $operator ANY ($array_fld_stamp)  AND $box


OR
Код: sql
1.
(fld,stamp) $operator ANY ($array_fld_stamp_boxes)


или что--то в этом роде.
индексы по (fld,stamp) есть на всех партициях.
(начал смотреть как залудить свой оператор -- как-то все насчет row не ясно, а паковать его в свой тип -- индексов не увидать [за что борьба])

можно пошить довольно большой динамический OR из
Код: sql
1.
OR (fld=$fld(i) AND stamp between $stamp(i) - $delt AND stamp between $stamp(i) + $delt ) 


что чревато либо ошибкой 'too many range table entries' либо даже OEM киллером. (видимо на этапе разбора). + заведомо большим несократимым временем планирования.

т.ч. требуются идеи.

выкрутасы с unnest(($array_fld_stamp) ) легко пишутся но в планировании не помогают -- план [быстро] строится , но, даже с laterlal, -- без учета партиционных ограничений по $stamp. (т.е., судя по всему, выбор партиции не откладывается -- не может быть отложен).

куда крестьянину подаццо ? есть у кого идеи ?
можно пнуть совсем в другую сторону, если есть такая сторона.


уточнение : предполагается, что запрос редкий (по заданным страницам индексов, как минимум) т.е. читается на холодную. Лишние партиции -- лишние дисковые чтения. много их.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / [хочу странного] row @operator@ ANY(ARRAY[rows,boxes])
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]