Mysql - сколько столбцов слишком много?

Я создаю таблицу, которая может иметь более 70 столбцов. Теперь я думаю о его расщеплении, так как некоторые данные в столбцах не будут нужны каждый раз, когда к ней обращаются. Опять же, если я это сделаю, мне остается использовать соединения.

В какой момент, если таковой имеется, считается ли это слишком много столбцов?

Ответ 1

Он считал слишком много, когда он над максимальным пределом поддерживаемым базой данных.

Тот факт, что вам не нужен каждый столбец, который будет возвращен каждым запросом, абсолютно нормален; что инструкция SELECT позволяет вам явно указывать нужные столбцы.

Как правило, ваша структура таблицы должна отражать вашу модель домена; если у вас действительно есть 70 (100, какие у вас) атрибуты, принадлежащие одному и тому же объекту, нет причин отделять их на несколько таблиц.

Ответ 2

Есть несколько преимуществ для разделения таблицы на несколько с меньшим количеством столбцов, которое также называется Вертикальное разделение. Вот несколько:

  • Если у вас есть таблицы со многими строками, изменение индексов может занять очень много времени, так как MySQL необходимо перестроить все индексы в таблице. Если индексы, разделенные на несколько таблиц, могли бы сделать это быстрее.

  • В зависимости от ваших запросов и типов столбцов MySQL может записывать временные таблицы (используемые в более сложных выборках) на диск. Это плохо, поскольку диск ввода/вывода может быть большой бутылочной горловиной. Это происходит, если в запросе есть двоичные данные (текст или blob).

  • Расширенная таблица может привести к снижению производительности запросов.

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

Ответ 3

Слишком много, когда оно нарушает правила нормализации. Достаточно сложно получить много столбцов, если вы нормализуете свою базу данных. Создайте свою базу данных для моделирования проблемы, а не вокруг каких-либо искусственных правил или идей по оптимизации для конкретной платформы db.

Примените следующие правила к широкой таблице, и у вас будет гораздо меньше столбцов в одной таблице.

  • Нет повторяющихся элементов или групп элементов
  • Частичные зависимости от конкатенированного ключа
  • Никаких зависимостей от неключевых атрибутов

Вот ссылка , чтобы помочь вам.

Ответ 4

Это не проблема, если все атрибуты не принадлежат одному объекту и не зависят друг от друга. Чтобы упростить жизнь, у вас может быть один текстовый столбец с массивом JSON. Очевидно, если у вас нет проблем с получением всех атрибутов каждый раз. Хотя это полностью исключило бы цель его хранения в СУБД и значительно усложнило бы каждую транзакцию базы данных. Таким образом, его не рекомендуется подход во всей базе данных.