Будет ли большое количество колонок замедлять работу с базой данных?

78
12 марта 2022, 13:20

Реализуем на mysql сбор данных с календарей объявлений на сайте недвижимости

Есть предложение 1 сделать базу с большим колличеством объектов и более чем 370 колонками (5 колонок с разными данными и 365 колонок на каждый день года - календарь с Y/N записями на каждый день). Задача собрать бд и как базовый вариант - интерфейс на php который подключается к базе, по id каждой строки выводить информацию из колонок в кадендарь. Будет ли такое большое количество колонок замедлять работу с базой данных?

Альтернативно есть предложение 2 каждый отдельные день вынести в отдельную строку, однако есть подозрение что это сильно усложнит выведении информации, придется какие-то костыли делать.

Пожалуйста подскажите какой по вашему мнению более выгодный вариант.

Answer 1

Большое количество колонок может привести к целому ряду проблем:

  • Некоторые из ваших запросов могут оказаться крайне медленными;
  • Потенциально, информация будет храниться неэффективно;
  • Вы теряете в гибкости получения данных и некоторые задачи окажутся не по зубам уже в обозримом будущем;
  • Если вам понадобятся индексы на большое число колонок - это приведёт к полному коллапсу.

Для эффективной работы в реляционной СУБД (MySQL) схему ваших таблиц сначала нужно нормализовать.

Пожалуйста, расскажите подробно: а что вы собираетесь хранить 365 в столбцах, отвечающих за дни?

Из описания задачи и схемы таблицы похоже, что вы собираетесь хранить там статистику или похожие на статистику данные. А прямо сейчас вы изобретаете колоночную СУБД (это такие специальные базы для хранения статистически-подобных данных). Если я угадал, рекомендую вам заменить MySQL на ClickHouse (одна из самых известных сегодня колоночных баз): сильно выиграете и в производительности и в простоте разработки.

READ ALSO
Сохранение данных банковской/кредитной карты, как в приложении AliExpress /Yota /сбербанк_онлайн

Сохранение данных банковской/кредитной карты, как в приложении AliExpress /Yota /сбербанк_онлайн

Суть такая: в приложении AliExpress есть возможность добавить данные банковской карточки и дальше с него автоматически производить оплату

205
Исчезла первая буква в имени подключаемого файла

Исчезла первая буква в имени подключаемого файла

При попытке подключения файла RouteControllerphp на сайте появляется ошибка "Неверное имя файла для подключения - outeController"

80
Вывод переменной в документ

Вывод переменной в документ

Ребят, помогите с JS Почему в этом случае не работает вывод переменной? Нигде не могу найти документаций, но видел пример использования

159
Помогите решить задачу c мультизагрузкой файлов с progress bar

Помогите решить задачу c мультизагрузкой файлов с progress bar

Как можно сделать эту конструкцию на javascript?

81