select * from test where id between client_id-10 and client_id+10 and client_id=?;
does not (it scans all partitions in parallel) .
Is it expected?
Yes. But the below would work fine I expect since the planner would know a constant range for id. I would be very surprised if the optimizer had some condition rewrite rules to handle just the scenario you show.
select * from test where id between ?-10 and ?+10 and client_id=?;
Чтобы сделать работу с сайтом удобнее, мы используем cookie и аналитический сервис «Яндекс.Метрика». Продолжая пользоваться сайтом, вы соглашаетесь с их использованием.