Vitsliputsli, первичный ключ - это сущность логической модели. Физически чаще всего это такой же индекс, с набором определенных свойств типа UNIQUE. В MS можно "изменить" свойства этого индекса, и он перестанет быть pk, но индекс останется. Так же в MS можно кластерным сделать любой индекс, но только один естественно, и не обязательно уникальное поле. А вот в PG можно кластеризовать в моменте таблицу по любому индексу, но он не станет из-за этого кластерным. Поэтому в PG партиционирование приходилось делать на относительно небольших таблицах, в несколько млн., которые MS или oracle переваривают без проблем.
Psychedelic Geek, надо пробовать, тестировать. Одной теорией тут не обойдёшься, и нет универсального решения. Сталкивался с ситуацией, когда запрос с индексом работал дольше, чем без индекса(если выборка по индексу возвращала 0 записей). MS есть кластерный индекс, в PG их нет, тоже свои нюансы использования из этого вытекают.
Vitsliputsli, в теории да. Но по опыту, в MS и PG быстрее, особенно если запрос возвращает множество записей. В oracle быстрее не будет, там вроде индекс в системных полях по дефолту присутствует.