На практике не делал, но чисто теоретически, поле id подразумевает что для него построен индекс primary key (иначе зачем оно нужно). В PostgreSQL primary key в партиционированной таблице - это индексы каждой отдельной партиции, т.е. если мы партиционировали не по полю id (а скорее всего так и есть), то при попытке обращения по полю id нам нужно отдельно пройтись по каждому индексу каждой партиции, а это уже не так весело как по одному индексу. А если партиции сделаны достаточно маленькими и их много, то фуллскан одной партиции скорее всего будет быстрее. А если контроль уникальности вынесен в приложение, то можно обойтись вообще без primary key, даже натурального, тогда и при вставке не нужно сканить все эти индексы.