Иногда это полезно для блокировок таблицы.Когда вы добавляете столбец в базу данных, вся таблица блокируется, пока не будет полностью перезаписана.Это не имеет никакого влияния, когда ваша база данных имеет 100 тыс. Строк.Но если у вас 100M строк или 1B строк, это совсем другая история ...
Также полезно избегать мертвых строк, которые занимают слишком много места.Если вы используете MVCC и некоторые из ваших столбцов регулярно перезаписываются, иногда имеет смысл поместить их в отдельную таблицу.Можно утверждать, что автоматическая очистка в конечном итоге срабатывает, но ради экономии работы с жестким диском лучше собирать несколько полей int в отдельной таблице, чем целую кучу целых строк, заполненных текстом, varchar (n) и кто знает что еще.
Последней причиной будет злоупотребление select *
в ORM.Например, если вы храните изображения или сообщения / статьи в блоге, имеет смысл сохранить поле blob / text в отдельной таблице.Потому что каждый раз, когда он загружается по той или иной причине, ваш ORM будет загружать всю строку.Когда вам нужен только URL-адрес вашего изображения или сообщения, последнее, что вам нужно, это извлечь весь двоичный файл / текст из базы данных;и все же ваш ORM сделает именно это ...