Слишком большое количество полей в таблице может привести к большим размерам кортежей, что может сделать сканирование таблицы более длительным.Сканирование таблицы произойдет, если вы читаете данные из вашей таблицы, которые не проиндексированы или не могут использовать индекс, или представляют достаточно большую долю ваших данных, что индекс не помогает.Другая проблема - обновления.Обновление часто перемещает строку из текущего местоположения диска в новое местоположение.Если ваше обновление увеличивает размер кортежа, и ваши обновления обычно затрагивают только несколько столбцов, вы с большей вероятностью получите фрагментацию таблицы.Это замедлит доступ к данным по всем направлениям.В этом случае может оказаться полезным разделить таблицу на части.
В целом, при хорошей системе, если в вашей таблице недостаточно строк (вероятно,> 50 000), у вас есть соответствующие индексы, и выне делают чрезмерных запросов, не должно быть большой проблемы.Если медленные запросы поднимают их голову, сверьтесь с их планом объяснения, чтобы определить, является ли проблема большой таблицей.
Если вам нужно разделить ее, а иногда это разумно, то можно создатьотношения один-к-одному.С SQL Server у меня возникли проблемы при попытке создания двунаправленного внешнего ключа.Единственный способ решить эту проблему - убедиться, что мое приложение никогда не удаляет напрямую из вторичных таблиц, или создать процедуру триггера.
Я не использовал EF, но с JPA это может бытьособенно неприятная проблема.