Умышленная денормализация нужна в тех случаях, когда её применение позволяет значительно снизить сложность запроса.
Скажем, если есть отношения 1-к-1 у трёх таблиц, и эти три таблицы очень большие, то для выборки одной "общей" записи надо делать запрос с тремя JOIN.
Оптимизировать можно делая три запроса, по одному к каждой таблице, либо применив умышленную денормализацию и сделав один простой запрос к одной таблице.
В моей практике были случаи, когда без умышленной денормализации было вообще не обойтись: MySQL и запрос с одним JOIN между двумя таблицами и условием "больше или равно" в WHERE, каждая из таблиц - несколько гигабайт. Без денормализации время исполнения запроса измерялось минутами, с ней - секундами.
Другие языки программирования и технологии
MySql и бд: Что такое умышленная денормализация и в каких случаях ее уместно применять?
Ко всему выше сказанному могу привести простой пример. Например, есть две таблицы users и message. Таблица users содержит данные всех пользователей, а таблица message содержит их сообщения. Можно провести денормализацию, поместив все поля из message в таблицу users. И таким образом, получится одна таблица users. Запрос к одной таблице делается быстрее, чем к нескольким. Но при этом может теряться логическая стройность базы. Поэтому к денормализации прибегают в случаях крайней необходимости при оптимизации.
дам ламерский ответ, чтобы данные быстрее получать, так как в случае нескольких таблиц либо надо делать несколько запросов, либо в запросе соединять таблицы (join). Однако в случае дублирования полей, сложнее добавлять данные, но обычно данные добавляют реже, чем пытаются получить их.
Похожие вопросы
- PHP+MySQL подскажите метод как задавать фотографии в БД если у одной строки (с одним ID) может быть несколько фотографий
- Нужна помощь в PHP програмировании с обращением к БД MySQL
- БД MySQL Что лучше? В одно поле запихнуть похожую информацию или создать много полей?
- Какая концепция таблиц в БД MySQL лучше?
- Добрый день. Только начинаю осваивать с#. И вот возник вопрос. Как программно заполнить combobox из таблицы бд mysql?
- MySQL хостинг с внешним доступом в БД. Желательно не дорого. Hostinger не советуйте, были с ними проблемы уже.
- MySQL и PHP SELECT * FROM `users` Как вывести определенную информацию из графы БД, человека который сейчас авторизован
- SQL, MySQL, PgSQL, NoSQL, Redis Нужно ли для разных СУБД и БД какие-то разные версии языка SQL или она одна на всех?
- MySql в чем плюсы? Почему не обойтись?
- Посоветуйте среду программирования? Приложение с активным использованием БД.