Ho alcune tabelle molto grandi nel mio database, ma una parte sostanziale di questi dati è "vecchia".
A causa di circostanze indipendenti dalla mia volontà, non sono autorizzato a rimuovere questi "vecchi" dati. L'altra limitazione è che non riesco a modificare il database, il che significa aggiungere filegroup ad esso. Allo stato attuale delle cose, tutto risiede nel PRIMARY
gruppo di file.
Stavo pensando di suddividere queste tabelle in alcune partizioni, come "nuovo", "vecchio", "archiviato" e simili. Ho una colonna "status" che vorrei utilizzare per questo scopo.
Dato lo scenario e i limiti descritti, mi chiedevo se il partizionamento abbia un senso qui. In altre parole, se la mia tabella è partizionata in questo modo, ma tutte le partizioni si trovano nello stesso filegroup, SQL Server sarà abbastanza intelligente da trovare quell'area speciale nel file sottostante in cui risiedono i miei "nuovi" dati e non toccare il area con "vecchi" dati?
Per dirla diversamente, se, diciamo, l'80% dei miei dati è "vecchio". SQL Server ha un meccanismo per evitare l'accesso al 100% dei file sottostanti e l'accesso solo al 20% che contiene "nuovi" dati (supponendo, ovviamente, che io specifichi la mia colonna di partizionamento nella WHERE
clausola delle query).
Immagino che per rispondere a questo, bisognerebbe capire come il partizionamento è implementato internamente. Apprezzo qualsiasi suggerimento.