|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
MySQL Одна таблица vs много таблиц (производительность)04.05.2023, 12:37. Показов 979. Ответов 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 Много таблиц или одна с пустыми значениями |
|
Супер-модератор
3941 / 2045 / 829
Регистрация: 13.03.2010
Сообщений: 6,727
|
||
| 04.05.2023, 12:43 | ||
|
У вас должна быть: - таблица с участниками; - таблица с соревнованиями; - таблица, которая связывает участников и соревнования. Всё это связать между собой внешними ключами. И не нужно изобретать велосипед на 1000 таблиц.
0
|
||
|
1304 / 996 / 232
Регистрация: 01.10.2018
Сообщений: 3,870
|
||
| 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
|
||
|
1304 / 996 / 232
Регистрация: 01.10.2018
Сообщений: 3,870
|
||
| 04.05.2023, 15:48 | ||
0
|
||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||
| 04.05.2023, 16:45 [ТС] | ||
|
Есть ли какая то инфа по этому вопросу, кто ни будь делал тесты?
0
|
||
|
1304 / 996 / 232
Регистрация: 01.10.2018
Сообщений: 3,870
|
||
| 04.05.2023, 16:56 | ||
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
|
| 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
|
||
|
1304 / 996 / 232
Регистрация: 01.10.2018
Сообщений: 3,870
|
||
| 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
Много ящиков - одна БД ?
Много пользователей - одна модель Одна схема - много пользователей Не создаются много кнопок, а лишь одна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|