|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|||||||||||
MySQL Что в итоге вызовет меньше нагрузки? внешние ключи vs объём?18.01.2023, 01:48. Показов 771. Ответов 12
Привет товарищи!
Сбор метрики в БД MySQL. Представим что есть метрика которая состоит из OS и Browser. 1. Можно сделать обычный табличный способ
Но вот у меня вопрос, есть ли смысл этих связей, если количество OS и Browser ограничено? Ну то есть в таблицах OS и Browser будет штук по 10 записей. Нет у нас миллионов операционных систем и браузеров. Выборки по OS или Browser не будет. Что будет дороже внешние ключи или объём данных без внешних ключей?
0
|
|||||||||||
| 18.01.2023, 01:48 | |
|
Ответы с готовыми решениями:
12
Внешние ключи Внешние ключи Внешние ключи |
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
|
||
| 18.01.2023, 04:39 | ||
|
Вообще, если использовать тупой, наивный подход, то вариант №1 будет затратнее, так как вам надо сначала найти записи в подчинённых таблицах (браузер и ОС), а потом внести запись в основную с ключами нужными. Если в подчинённых ничего нет, то придётся сначала в них вносить записи. Если немного проявить фантазии, то подчинённые таблицы можно кешировать в памяти и там и искать ключи. Тогда вставка в основную таблицу будет даже дешевле, чем в №2. В общем, старайтесь придерживать нормализации. Да и на будущее задел будет. Если понадобится выборка по браузерам и ОС, то это будет эффективнее, нежели денармализованный вариант.
1
|
||
|
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
|
|
| 18.01.2023, 08:40 | |
|
Для одного сервиса сейчас использую второй вариант без внешних ключей. Изначально вообще была только таблица 'Metrics' с ID. Потом уже, чисто для удобства (для отчётов), появились таблицы с текстовыми описаниями этих ID. Если даже для какого-то ID по какой-то причине не обнаруживается описания, на функционале приложения это никак не сказывается (а описание можно добавить в любой момент).
1
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||||
| 18.01.2023, 10:29 [ТС] | ||||
|
0
|
||||
|
|
||
| 18.01.2023, 10:34 | ||
|
BeginnerCoderCS, При денормализации самое главное не забыть обновить данные, если вдруг меняются справочники.
1
|
||
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
|
||
| 18.01.2023, 10:54 | ||
|
1
|
||
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|
| 18.01.2023, 14:14 [ТС] | |
|
Подтвердите или опровергните выводы мои.
Допустим мне нужно хранить сокращение языков (en|ru|ua|kz). 1.1. В этом случае лучше в таблицу `Metrics` добавить непосредственно запись `lang varchar(2)` который будет занимать 3 байта, чем делать отдельную таблицу с внешним ключом, который будет занимать 4 байта. 1.2. Но если нужна выборка по языку, то всё-таки лучше использовать внешний ключ. Но если нужно хранить страну в `Metrics` (приблизительно 251 штука) 2.1. Лучше использовать внешний ключ, так как длина страны может быть большой (Кита́йская Наро́дная Респу́блика). 2.2. Но если выборка не нужна, есть ли плюсы хранения в самой `Metrics`
0
|
|
|
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
|
|
| 18.01.2023, 15:45 | |
|
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
|
|
| 18.01.2023, 16:28 | |
|
BeginnerCoderCS, сокращение языка и название страны - справочники. Справочникам свойственно расширять набор атрибутов и корректировать значения. Поэтому внешний ключ (читай: ссылка) на таблицу справочника гибче, чем само значение в исходной таблице. Сегодня вам надо просто сокращения языков, а завтра к ним добавить ещё какие-нибудь особенности. К примеру полное название и формат даты. Что вы будете делать со своими VARCHAR(2)?
По поводу 3 байта vs 4 байта. Записи на диске один чёрт хранятся в виде страниц, часто фиксированного размера. Поля выравниваются по краю 4 байт, для оптимизации доступа в ОЗУ (куда страница попадает с диска). Вот эти вот экономии в единицах байт больше вредят, чем пользы приносят. Про выборку я вообще не понял. Если вам нужна будет выборка по языку RU, то сканировать всю таблицу и сравнивать каждое поле LANG со строкой "RU" не будет сильно быстрее однократного поиска в таблице-справочнике, с последующим поиском int'а в исходной таблице. Да ещё и индексы никто не отменял...
0
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|||
| 18.01.2023, 16:45 [ТС] | |||
|
0
|
|||
|
|
|
| 18.01.2023, 16:49 | |
|
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,439
|
||
| 18.01.2023, 17:02 | ||
|
0
|
||
|
|
|
| 18.01.2023, 17:15 | |
|
BeginnerCoderCS, Не знаю как в MySQL, но в SSMS для MS SQL Server есть анализатор запросов, который показывает рекомендуемые отсутствующие индексы для запроса. Оченно удобная штука, если нужно создать необходимый индекс о котором даже не подозреваешь.
0
|
|
| 18.01.2023, 17:15 | |
|
Помогаю со студенческими работами здесь
13
Внешние ключи Первичные и внешние ключи phpMyAdmin внешние ключи Внешние ключи в mysql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|