|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
MySQL Одна таблица vs много таблиц (производительность)04.05.2023, 12:37. Показов 1024. Ответов 11
Метки нет (Все метки)
Здравствуйте.
Понятно что чем меньше таблиц в phpMyAdmin тем легче и быстрее понять БД. Но что при этом происходит с производительностью. Например; На сайте проходят соревнования участников, есть 2 варианта как сохранить каждое соревнование - под каждое соревнование отдельную таблицу (что скорее всего все возненавидят), или одну таблицу для всех соревнований с дополнительным полем идентификатора соревнования. Если у нас на сайте 1000 соревнований и в каждом по 400 участников ( в среднем) , то в первом случае мы получаем 1000 таблиц, а во втором одну таблицу на 400000 записей. И вот вопрос; Нужно из пятого соревнования вытащить тех у частников у которых вес от 50кг до 55 и возраст 30-35 лет. В первом случае ьы берем SELECT из пятой таблицы, а во втором из общей таблицы WHERE `idEvent` = 5. В каком случае будет быстрее? А если нужно периодически переписывать соревнование (новый участники), то в первом случае достаточно просто очистить пятую таблицу и закинуть туда все новые данные , а во втором удалить все записи из общей таблицы (WHERE `idEvent` = 5) и закинуть новые. И тоже не ясно на сколько в общей таблице это будет медленнее?
0
|
|
| 04.05.2023, 12:37 | |
|
Ответы с готовыми решениями:
11
Производительность - одна большая таблица или много маленьких Одна форма много таблиц EF Много таблиц или одна с пустыми значениями |
|
Супер-модератор
3971 / 2093 / 832
Регистрация: 13.03.2010
Сообщений: 6,916
|
||
| 04.05.2023, 12:43 | ||
|
У вас должна быть: - таблица с участниками; - таблица с соревнованиями; - таблица, которая связывает участников и соревнования. Всё это связать между собой внешними ключами. И не нужно изобретать велосипед на 1000 таблиц.
0
|
||
|
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
|
||
| 04.05.2023, 13:44 | ||
|
Если характеристики соревнований примерно одинаковые, то одна таблица. Если есть соревнования двух совершенно разных видов, то можно использовать две таблицы.
0
|
||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
| 04.05.2023, 15:19 [ТС] | |
|
Вопрос не в том как решить эту задачу, а когда выше производительность - когда запросы работают с одной из 1000 таблиц, или когда все эти "1000 таблиц" находятся в одной и в неё через sql запрос нужно обработать эти данные.
Все равно же когда мы обращаемся к таблице с условием WHERE `idEvent` = 5 - на эту выборку записей тратится времени больше чем на SELECT без WHERE. И чем больше записей в таблице, тем медленнее должен работать SELECT вместе с WHERE. А когда мы берем все данные из одной маленькой таблицы на 400 записей (а не из большой общей на 400000 записей) - то WHERE не нужен и получить все данные из этой таблицы мы должны быстрее чем из общей. Но другой вопрос на сколько быстрее. Как сильно зависит производительность выборки от числа записей в таблице (и не только выборки но и перезаписи и других sql действий - SELECT, INSERT...) ?
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 04.05.2023, 15:39 | ||
|
0
|
||
|
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
|
||
| 04.05.2023, 15:48 | ||
0
|
||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||
| 04.05.2023, 16:45 [ТС] | ||
|
Есть ли какая то инфа по этому вопросу, кто ни будь делал тесты?
0
|
||
|
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
|
||
| 04.05.2023, 16:56 | ||
0
|
||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
|
|
| 04.05.2023, 20:11 | |
|
nnnikotinnn995, рекомендую посмотреть в сторону партицирования. СУБД сама внутри себя разделит одну таблицу на множество частей (партиций) по выбранным вами критериям.
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 05.05.2023, 12:48 | ||
|
Что касаемо производительности. В составе документации по Oracle есть том Performance Tuning Guide. Наверняка по MySQL есть что-то аналогичное
0
|
||
|
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
|
||
| 05.05.2023, 14:01 | ||
|
Добавлено через 3 минуты Еще проще: после проверки по белому списку, которая обычно в любом случае присутствует, нет особой разницы между изменением имени таблицы и изменением условия фильтрации. Добавлено через 1 минуту А вот, отталкиваясь от "участника", искать его "участие" будет действительно интересно
0
|
||
|
75 / 58 / 20
Регистрация: 01.10.2009
Сообщений: 208
|
||||||
| 11.05.2023, 10:57 | ||||||
|
если это разовая ситуация на 400тыс, то можно хранить и в одной таблице
если это регулярно пополняемая, например раз в год, то имеет смысл бить их по годам/месяцам и тп как я это вижу таблица `участники` (`id`,`фио`,`дата рождения`,`пол`,`доп информация`) таблица `виды_соревнований` (`id`,`название`) таблица `связи_2023` (`id`,`id_участника`,`id_вида_соревнован ия`,`вес_участника в integer`,`результат`)
0
|
||||||
| 11.05.2023, 10:57 | |
|
Помогаю со студенческими работами здесь
12
Много ящиков - одна БД ?
Много пользователей - одна модель Одна схема - много пользователей Не создаются много кнопок, а лишь одна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|