Что правильнее и быстрее: дублировать одинаковые столбцы в нескольких родственных таблицах или использовать JOINы?

Суть вопроса:
Имеются несколько типов услуг, каждый из них содержит такие поля как дата активации, дата окончания и т.д., и в то же время имеет специфические опции, по которым будет происходить выборка.

Что правильнее и быстрее в таком случае?
  1. Создать таблицу-родитель(c общими полями) и связать с ней таблицы параметров каждой конкретной услуги
  2. Запихать все в одну таблицу и использовать VIEW для каждого конкретного типа услуг
  3. Создать разные таблицы для всех типов услуг и дублировать общие поля
  • Вопрос задан
  • 2742 просмотра
Решения вопроса 2
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
Правильнее - 1 вариант, быстрее - 2.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tovogukA
С JOIN - формально правильнее для любой RDBMS. Производительности, как правило, хватает.
Но в некоторых РЕДКИХ случаях может вызвать проблемы производительности.

Вариант с одной таблицей (с дублями) - в таких РЕДКИХ случаях помогает решить проблему с производительностью. Но возможны косяки - из-за несинхронизирования дублирующей информации.

Но, как правило, проблема с производительностью лежит в другой плоскости.

Дублировать, на практике, приходится по другой причине, - ВОВСЕ не из-за производительности.

Например, интернет магазин:

Цены - могут поменяться.
Но в таблицу с заказанными уже товарами должно уехать (дублироваться) все по старому, то есть так цена, что была в момент оформления заказа покупателем. А вовсе не ссылка на таблицу с текущими ценами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы