Abbiamo questo ampio database (> 1 TB) che intendiamo "ridurre". Il database ruota attorno a un'entità principale, chiamiamola "Visita". Per la discussione, diciamo che è un database per una pratica medica.
Esistono in totale 30 "tipi" di visita, come procedura, annuale, follow-up, immunizzazione ecc., Ciascuno dei quali è una tabella sussidiaria per "Visita", ad esempio "visit_immuno".
Il database ha accumulato circa 12 anni di dati dal 2000. Qualcuno ha proposto di mantenere circa 3 anni di dati nella versione "live" e di fare in modo che il resto sia attivo in un database "old_data". La data viene memorizzata SOLO nella tabella "Visita" poiché è normalizzata. La tabella Visit contiene anche una ROWVERSION
colonna e una colonna BIGINT
pseudo-identità (raggruppata). A tutti gli effetti, supponiamo che la chiave di clustering sia popolata da una SEQUENZA (SQL Server 2012 Enterprise) - la chiameremo cid
.
Non visit.date
è sempre nello stesso ordine della chiave di clustering, ad esempio quando un medico effettua visite prolungate e ritorna con la sua "valigetta" di dati, viene unito alla tabella principale. Ci sono anche alcuni aggiornamenti alla tabella "visit" che causano la ROWVERSION
mancata sincronizzazione della colonna con entrambe le colonne cid
e date
- per dirla semplicemente, ROWVERSION
né cid
renderebbe né adatte le chiavi di partizione per questo motivo.
La regola aziendale per la rimozione dei dati dal "live" è che visit.date
deve essere maggiore di 36 mesi evisit_payment
deve esistere un record figlio . Inoltre, il database "old_data" non contiene nessuna delle tabelle di base tranne visit%
.
Quindi finiamo con:
Live DB (uso quotidiano) - Tutte le tabelle DB di dati vecchi - dati più vecchi per le visit%
tabelle
La proposta richiede un DB combinato che sia una shell contenente sinonimi di TUTTE le tabelle di base nelle Live DB
(tranne visit%
) più viste che UNION ALL tra le visit%
tabelle nei due database.
Supponendo che gli stessi indici vengano creati nel Old-Data
DB, le query funzioneranno bene nelle viste UNION-ALL ? Che tipo di modelli di query potrebbe scattare il piano di esecuzione per l'Unione-ALL Visualizzazioni ?