Най-добрата практика е винаги започнете с 3NF и след това помислете за денормализиране само ако откриете специфичен проблем с производителността.
Изпълнението е само едно от проблемите, с които трябва да се справите с базите данни. Чрез дублирането на данни рискувате да позволите непоследователни данни да бъдат във вашата база данни, като по този начин анулирате един от основните принципи на релационните бази данни, последователността (C
в ACID
) .
Да, присъединяванията имат цена, няма как да се заобиколи. Въпреки това, цената обикновено е много по-ниска, отколкото си мислите, и често може да бъде затрупана от други фактори, като времената за мрежово предаване. Като се уверите, че съответните колони са индексирани правилно, можете да избегнете голяма част от тези разходи.
И не забравяйте мантрата за оптимизация:измерете, не гадайте! И измервайте в среда, подобна на производството. И запазете измерване (и настройка) периодично - оптимизацията е само операция за настройка и забравяне, ако вашата схема и данни никога не се променят (много малко вероятно).
Възвръщането на производителността обикновено може да се направи безопасно чрез използване на тригери за поддържане на последователност. Това, разбира се, ще забави вашите актуализации, но все пак може да позволи на избраните ви да се изпълняват по-бързо.