Mysql
 sql >> Database >  >> RDS >> Mysql

L'ordinamento delle colonne influisce sulle prestazioni in Microsoft SQL Server 2012?

L'ordine delle colonne in una tabella avrà un impatto molto ridotto sulle prestazioni, rispetto all'impatto sulle prestazioni della progettazione del database (entità, attributi e relazioni), della progettazione della transazione e della progettazione della query.

Per capire se la differenza non è trascurabile, dovresti davvero impostare alcuni test e confrontare i risultati.

In genere, inserisco la chiave primaria come prima colonna, quindi le chiavi esterne, quindi le chiavi naturali e le colonne a cui si accede di frequente. Di solito metto le corde più lunghe verso la fine della riga. Ma questa non è necessariamente un'ottimizzazione delle prestazioni, quanto una preferenza di stile che utilizzo per comodità.

L'ordine delle colonne può incidere sulla dimensione della riga in SQL Server, quando un numero elevato di colonne in una riga ammette valori Null e la maggior parte di tali colonne contiene NULL. SQL Server (come Oracle) ha un'ottimizzazione in cui non è riservato spazio per le colonne che contengono valori NULL ALLA FINE della riga. Uno spazio è riservato per ogni colonna della riga, fino all'ultimo valore non NULL nella riga.

Il risultato è che se hai molte colonne nullable, vuoi le colonne che più frequentemente non sono NULL PRIMA delle colonne che sono più frequentemente NULL.

NOTA:Tenere presente che SQL Server ordina prima le colonne all'interno di una tabella in base al fatto che la colonna sia di lunghezza fissa o di lunghezza variabile. Tutte le colonne a lunghezza fissa vengono memorizzate per prime, quindi seguite da tutte le colonne a lunghezza variabile. All'interno di questi insiemi di colonne (fisse e variabili), le colonne sono memorizzate nell'ordine in cui sono definite.