Как уже отмечалось, существует множество потенциальных проблем с производительностью. Однажды я работал над базой данных, где размещение очень больших столбцов в конце улучшало производительность, если вы не ссылались на эти столбцы в своем запросе. Очевидно, что если запись охватывает несколько блоков диска, ядро базы данных может прекратить чтение блоков, как только получит все необходимые столбцы.
Конечно, любое влияние на производительность сильно зависит не только от производителя, которого вы используете, но также и от версии. Несколько месяцев назад я заметил, что наши Postgres не могут использовать индекс для сравнения «как». То есть, если вы написали «somecolumn типа« M% »», он не был достаточно умен, чтобы перейти к M и выйти, когда он нашел первый N. Я планировал изменить несколько запросов, чтобы использовать «между». Затем мы получили новую версию Postgres, и она с умом справилась. Рад, что никогда не удосужился изменить запросы. Очевидно, что здесь это не имеет прямого отношения, но я хочу сказать, что все, что вы делаете из соображений эффективности, может быть устаревшим со следующей версией.
Порядок столбцов почти всегда очень важен для меня, потому что я обычно пишу общий код, который читает схему базы данных для создания экранов. Например, мои экраны «редактировать запись» почти всегда создаются путем чтения схемы, чтобы получить список полей, а затем отображения их по порядку. Если бы я изменил порядок столбцов, моя программа все равно работала бы, но отображение могло бы быть странным для пользователя. Например, вы ожидаете увидеть имя / адрес / город / штат / почтовый индекс, а не город / адрес / почтовый индекс / имя / штат. Конечно, я мог бы поместить порядок отображения столбцов в код, контрольный файл или что-то еще, но затем каждый раз, когда мы добавляли или удаляли столбец, мы должны были помнить, чтобы обновлять контрольный файл. Мне нравится говорить вещи один раз. Кроме того, когда экран редактирования построен исключительно из схемы, добавление новой таблицы может означать написание нулевых строк кода для создания экрана редактирования для него, что очень круто. (Ну, ладно, на практике обычно мне нужно добавить запись в меню для вызова универсальной программы редактирования, и я, как правило, отказался от универсального «выберите запись для обновления», потому что существует слишком много исключений, чтобы сделать его практичным .)