Помогите с архитектурой mysql
-
- Сообщения: 21
- Зарегистрирован: 2014.07.01, 23:11
Помогите с архитектурой mysql
Добрый вечер! Помоги с архитектурой mysql. Предположим у нас есть много компаний у которых в свою очередь есть много заказов. Допустим на 1 компанию 4 тыс заказов. Как правильнее разработать бд. Все заказы пихать в 1 таблицу и по id все доставать? Если делать такой вариант не будет ли слишком долго выполняться запрос? Или же как вариант при создании новой компании генерировать новую таблицу заказов для это компании? Опять же теория. В общем подскажите как правильнее сделать архитектуру, что б потом не было проблем
Re: Помогите с архитектурой mysql
Нагенерируйте пару миллионов строк и попробуйте повыполнять запросы по индексам и без и вставки. Так точное время выполнения и узнаете.
-
- Сообщения: 21
- Зарегистрирован: 2014.07.01, 23:11
- VLD-UKRAINE
- Сообщения: 20
- Зарегистрирован: 2017.04.29, 18:56
- Контактная информация:
Re: Помогите с архитектурой mysql
К чему хотите привязывать заказы - к компаниям? - к клиентам? - к товару? Вопрос многогранный. Что потом хотите выбирать? Даты? Суммы? По клиентам? По компаниям? На подобную задачу может понадобится не 10 и не 20 таблиц! А время перебора - например таблица с 10 тыс клиентов выборка с соединением 7 таблиц группировками и вычислениями занимает 0.00017сек.
-
- Сообщения: 21
- Зарегистрирован: 2014.07.01, 23:11
Re: Помогите с архитектурой mysql
Заказы будут привязаны к компаниям. Клиенты будут привязаны к компаниям и я думаю смысла нету делать привязку к клиентам, т.к. у компании может быть множество клиентов и всем им доступны заказы. Вопрос заключался именно в заказах целесообразно ли пихать такое количество заказов в 1 таблицу? Просто если компаний штук 10 и заказов у компаний будет в районе 2к то все в 1 таблицу, но а если будет 1000 компаний и у них будет по 20000 тыс заказовVLD-UKRAINE писал(а): ↑2017.05.03, 19:11 К чему хотите привязывать заказы - к компаниям? - к клиентам? - к товару? Вопрос многогранный. Что потом хотите выбирать? Даты? Суммы? По клиентам? По компаниям? На подобную задачу может понадобится не 10 и не 20 таблиц! А время перебора - например таблица с 10 тыс клиентов выборка с соединением 7 таблиц группировками и вычислениями занимает 0.00017сек.
Re: Помогите с архитектурой mysql
Сделайте партицирование по id компании и проблем с миллионами не будет.
- VLD-UKRAINE
- Сообщения: 20
- Зарегистрирован: 2017.04.29, 18:56
- Контактная информация:
Re: Помогите с архитектурой mysql
Согласен. Если компаний много - то вы можете со временем заблудиться в их названиях. Сделайте таблицу - id -> Название компании, и потом как вам удобно либо для каждого id своя таблица либо все id в одну, для Mysql обработка таблиц только с числами, а к этому надо стремится, занимает очень мало времени даже при болших количествах записей в таблице.
Re: Помогите с архитектурой mysql
Я про CREATE TABLE orders ... PARTITION BY KEY(company_id)
https://dev.mysql.com/doc/refman/5.7/en ... types.html
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42