Задать вопрос
@korsar182

Есть ли преимущества от удаления поля id при создании таблицы?

Есть база данных Postgresql с одной партиционированной таблицей, у которой отсутствует поле id. Это было сделано якобы для быстродействия. Вопрос - действительно ли от такого может быть толк?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
Вникаете в предметную область той задачи, для которой эта таблица используется. Всё, ответ найден.

Нет ничего удивительного в таблицах, у которых нет поля id. В предметной области может быть достаточно хороший естественный ключ.

С точки зрения производительности - да, конечно, есть смысл не хранить ненужные данные. Меньше строка => меньше таблица => в тот же объём RAM влезает больше кеша и меньше IO. Немного, правда, чистыми 8гб на каждый миллиард строк получается всего для bigint. Но если поле больше ни для чего не нужно, то почему бы и нет?
Ответ написан
Комментировать
@Everything_is_bad
Без контекста задачи нельзя что-то конкретное ответить на этот вопрос, но в общем случае, удаление id вызывает вопросы, но даже без них, это экономия на спичках.
Ну и формулировка "удаления поля id при создании таблицы", это как?
Ответ написан
Комментировать
@Vitsliputsli
На практике не делал, но чисто теоретически, поле id подразумевает что для него построен индекс primary key (иначе зачем оно нужно). В PostgreSQL primary key в партиционированной таблице - это индексы каждой отдельной партиции, т.е. если мы партиционировали не по полю id (а скорее всего так и есть), то при попытке обращения по полю id нам нужно отдельно пройтись по каждому индексу каждой партиции, а это уже не так весело как по одному индексу. А если партиции сделаны достаточно маленькими и их много, то фуллскан одной партиции скорее всего будет быстрее. А если контроль уникальности вынесен в приложение, то можно обойтись вообще без primary key, даже натурального, тогда и при вставке не нужно сканить все эти индексы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы