Vorrei parlare di come ci siano molte cose che possono essere fatte per migliorare le prestazioni. La prima cosa è sempre quella di verificare se sono presenti gli indici corretti. Di particolare preoccupazione in un database normalizzato è assicurarsi che gli FK siano indicizzati. Probabilmente ciò risolverebbe molti problemi di prestazioni.
Altre cose da considerare riscriverebbero il codice SQL per usare tecniche più performanti come sbarazzarsi di cursori e subquery correlate e rendere le clausole sargable. Si desidera esaminare singolarmente le query con il rendimento peggiore. Dovresti anche esaminare le query che vengono eseguite frequentemente (specialmente se più utenti le eseguono simultaneamente) poiché una piccola modifica in quelle potrebbe moltiplicarsi nel sistema. Se le tue domande peggiori provengono da un ORM, potrebbero dover essere riscritte come stored proc in modo che possano essere ottimizzate per le prestazioni.
Potresti anche assicurarti di avere un problema di prestazioni. Quello che potresti avere è in realtà un problema di blocco in cui il codice performante viene bloccato da altri processi e deve attendere.
Quindi dovresti considerare l'hardware, se hai sottodimensionato hardware e connessioni di rete, probabilmente nessun altro cambiamento lo risolverà.
In un sistema aziendale di grandi dimensioni, è possibile prendere in considerazione il partizionamento dei dati.
La denormalizzazione è una tecnica per migliorare le prestazioni, ma è la ultima cosa che vorresti considerare. Primo, hai il rischio di modificare drasticamente la struttura. La conversione dei dati nella nuova struttura è qualcosa che può andare molto male se viene commesso un errore ed è più dispendioso in termini di tempo apportare questo tipo di cambiamento strutturale rispetto agli altri possibili miglioramenti delle prestazioni. Sarebbe anche irresponsabile denormalizzare senza creare trigger per assicurarsi che i dati rimangano sincronizzati mentre viene modificato nelle tabelle denormalizzate. Ciò potrebbe significare che le selezioni sono imporse ma le query di azione sono più lente, quindi le prestazioni potrebbero non essere imputate tanto quanto si pensa. È anche una preoccupazione che nella denormalizzazione, potresti rendere le tabelle significativamente più ampie e che possono influire negativamente sulle prestazioni se hai tabelle ampie.