Mysql - сколько столбцов слишком много?
Я создаю таблицу, которая может иметь более 70 столбцов. Теперь я думаю о его расщеплении, так как некоторые данные в столбцах не будут нужны каждый раз, когда к ней обращаются. Опять же, если я это сделаю, мне остается использовать соединения.
В какой момент, если таковой имеется, считается ли это слишком много столбцов?
Ответы
Ответ 1
Он считал слишком много, когда он над максимальным пределом поддерживаемым базой данных.
Тот факт, что вам не нужен каждый столбец, который будет возвращен каждым запросом, абсолютно нормален; что инструкция SELECT позволяет вам явно указывать нужные столбцы.
Как правило, ваша структура таблицы должна отражать вашу модель домена; если у вас действительно есть 70 (100, какие у вас) атрибуты, принадлежащие одному и тому же объекту, нет причин отделять их на несколько таблиц.
Ответ 2
Есть несколько преимуществ для разделения таблицы на несколько с меньшим количеством столбцов, которое также называется Вертикальное разделение. Вот несколько:
-
Если у вас есть таблицы со многими строками, изменение индексов может занять очень много времени, так как MySQL необходимо перестроить все индексы в таблице. Если индексы, разделенные на несколько таблиц, могли бы сделать это быстрее.
-
В зависимости от ваших запросов и типов столбцов MySQL может записывать временные таблицы (используемые в более сложных выборках) на диск. Это плохо, поскольку диск ввода/вывода может быть большой бутылочной горловиной. Это происходит, если в запросе есть двоичные данные (текст или blob).
-
Расширенная таблица может привести к снижению производительности запросов.
Не досрочно оптимизируйте, но в некоторых случаях вы можете получить улучшения от более узких таблиц.
Ответ 3
Слишком много, когда оно нарушает правила нормализации. Достаточно сложно получить много столбцов, если вы нормализуете свою базу данных. Создайте свою базу данных для моделирования проблемы, а не вокруг каких-либо искусственных правил или идей по оптимизации для конкретной платформы db.
Примените следующие правила к широкой таблице, и у вас будет гораздо меньше столбцов в одной таблице.
- Нет повторяющихся элементов или групп элементов
- Частичные зависимости от конкатенированного ключа
- Никаких зависимостей от неключевых атрибутов
Вот ссылка , чтобы помочь вам.
Ответ 4
Это не проблема, если все атрибуты не принадлежат одному объекту и не зависят друг от друга.
Чтобы упростить жизнь, у вас может быть один текстовый столбец с массивом JSON. Очевидно, если у вас нет проблем с получением всех атрибутов каждый раз. Хотя это полностью исключило бы цель его хранения в СУБД и значительно усложнило бы каждую транзакцию базы данных. Таким образом, его не рекомендуется подход во всей базе данных.