Это очень сильно зависит от фактических определений таблиц и индексов. Коммутатор сохраняет 4 байта для столбца, но, поскольку все хранилище выполняется с кратностью 8 байт, его можно проглотить путем выравнивания или освободить 8 байт, если вам повезет.
Стандартный индекс btree, поддерживающий PK не изменится в размере, 4 байта будут потеряны при заполнении выравнивания. Но , если вы используете для дополнительного 4-байтового столбца в покрывающем индексе, это экономит 8 байтов вместо всего 4, что делает индекс кортежа всего 20 байтов вместо 28.
Первичный ключ bigint
является только началом. Если есть ссылки на внешние ключи, эффекты умножаются. Или у вас есть многоколоночные индексы, включающие несколько столбцов FK. Тогда переключатель может очень хорошо привести к хорошему ускорению, как вы ищете. Особенно, если кеш-память ограничена. Все зависит.
Если вы уверены, что не будете записывать более 3 ^ 31 чисел (не 2 ^ 32: Postgres использует целое число со знаком, вам также придется использовать отрицательную половину) сверх За время жизни таблицы и вы фактически экономите место в таблицах и индексах, а затем непременно переключаетесь на обычный integer
. Я видел реальную разницу много раз. Но вам необходимо некоторое понимание механизмов хранения Postgres, прежде чем с этим возиться.
Связанный: