денормализация



Автор Глеб задал вопрос в разделе Другие языки и технологии

MySql и бд: Что такое умышленная денормализация и в каких случаях ее уместно применять? и получил лучший ответ

Ответ от LeXa2[новичек]
Умышленная денормализация нужна в тех случаях, когда её применение позволяет значительно снизить сложность запроса.
Скажем, если есть отношения 1-к-1 у трёх таблиц, и эти три таблицы очень большие, то для выборки одной "общей" записи надо делать запрос с тремя JOIN.
Оптимизировать можно делая три запроса, по одному к каждой таблице, либо применив умышленную денормализацию и сделав один простой запрос к одной таблице.
В моей практике были случаи, когда без умышленной денормализации было вообще не обойтись: MySQL и запрос с одним JOIN между двумя таблицами и условием "больше или равно" в WHERE, каждая из таблиц - несколько гигабайт. Без денормализации время исполнения запроса измерялось минутами, с ней - секундами.

Ответ от фио фио[гуру]
Ко всему выше сказанному могу привести простой пример. Например, есть две таблицы users и message. Таблица users содержит данные всех пользователей, а таблица message содержит их сообщения. Можно провести денормализацию, поместив все поля из message в таблицу users. И таким образом, получится одна таблица users. Запрос к одной таблице делается быстрее, чем к нескольким. Но при этом может теряться логическая стройность базы. Поэтому к денормализации прибегают в случаях крайней необходимости при оптимизации.

Ответ от Carlos[гуру]
дам ламерский ответ, чтобы данные быстрее получать, так как в случае нескольких таблиц либо надо делать несколько запросов, либо в запросе соединять таблицы (join). Однако в случае дублирования полей, сложнее добавлять данные, но обычно данные добавляют реже, чем пытаются получить их.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: MySql и бд: Что такое умышленная денормализация и в каких случаях ее уместно применять?
Денормализация на Википедии
Посмотрите статью на википедии про Денормализация
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*