Un design che modella concisamente il tuo problema è sempre un buon inizio. L'overgeneralization del modello di dati può portare a problemi di prestazioni. Ad esempio, ho sentito rapporti di progetti che cercano la massima flessibilità che utilizzano l'RDBMS come un "nome/valore" stupido, e le prestazioni risultanti sono state terribili.
Una volta installato un buon progetto, utilizzare gli strumenti forniti da RDBMS per ottenere prestazioni ottimali. PK a campo singolo (senza materiali compositi), ma chiavi aziendali composte come indice con vincolo univoco, utilizzo di tipi di dati appropriati, ad es. utilizzando tipi numerici appropriati per valori numerici piuttosto che char o simili.Dovrebbero essere considerati anche gli attributi fisici dell'hardware su cui è in esecuzione RDBMS, dal momento che la maggior parte del tempo di interrogazione è spesso I/O su disco, ma ovviamente non lo si dà per scontato - utilizzare un profiler per scoprire dove sta andando il tempo .
A seconda del rapporto di aggiornamento/query, le viste materializzate/viste indicizzate possono essere utili per migliorare le prestazioni per le query lente. L'alternativa di un uomo povero consiste nell'utilizzare i trigger per richiamare una procedura che popola la tabella con il risultato di una visualizzazione lenta e con scarsa frequenza di visualizzazione.
L'ottimizzazione delle query è un po 'un'arte nera poiché è spesso dipendente dal database, ma alcune regole sono fornite qui - Optimizing SQL.
Infine, anche se probabilmente al di fuori dell'ambito previsto della domanda, utilizzare un livello di accesso ai dati valido nell'applicazione ed evitare la tentazione di eseguire il rollover - esistono sicuramente implementazioni testate e performanti disponibili per tutte le principali lingue. L'uso della memorizzazione nella cache a livello di accesso ai dati, livello intermedio e livello applicazione può aiutare a migliorare notevolmente le prestazioni.
Wiki di comunità? –
ottima domanda. –
Mi piacerebbe avere più risposte. – Zombies