Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Partizionamento per anno rispetto a tabelle separate denominate Data_2011, Data_2010, ecc

Dal punto di vista interno, i metodi sono essenzialmente gli stessi.

Dietro le quinte, quando crei una partizione basata sulla data, il motore SQL crea tabelle fisiche separate per ciascuna partizione, quindi esegue quella che è fondamentalmente una UNION quando interroghi la tabella stessa.

Se utilizzi un filtro nella tua query sulla tabella partizionata che corrisponde al tuo campo di partizionamento (DateField diciamo), quindi il motore può andare direttamente alla partizione di cui hai bisogno per i dati. In caso contrario, esegue la ricerca in ogni tabella fisica nella tabella logica in base alle esigenze per completare la query.

Se le tue domande comporteranno un filtro della data (come sembra dalla tua domanda), allora non riesco a pensare a nessun vantaggio per il tuo metodo "personalizzato".

In sostanza, la scelta che devi fare è vuoi essere responsabile di tutta la logica e dei casi d'angolo coinvolti nel partizionamento o fidarti degli sviluppatori Microsoft che lo fanno da decenni per farlo per te?

Per i miei scopi, se esiste un framework integrato per qualcosa che voglio fare, cerco sempre di usarlo. È invariabilmente più veloce, più stabile e meno soggetto a errori di una soluzione "roll-your-own".