Sto lavorando su un progetto di database esistente. Esiste una tabella in cui ogni riga viene creata con solo metà delle colonne popolate (il resto è inizialmente tutto NULL
, ad eccezione di una colonna is_populated
) e successivamente un singolo UPDATE
per popolare le colonne rimanenti (in genere settimane a un mese dopo). Nessuno dei dati in nessuna delle colonne è destinato a cambiare dopo essere stato popolato (vale a dire quando non sono più NULL
). Anche se il sistema è piuttosto vecchio, sembrano esserci molte più righe non aggiornate rispetto alle righe aggiornate.
Diciamo che inizialmente ci sono 5 colonne popolate e 5% colonneNULL
. Dopo il UPDATE
vengono popolate tutte e 10 le colonne. Non è consentito che i dati diventino non popolati dopo il primo UPDATE
.
Questa è veramente una relazione uno a uno? Se entrambe le metà dei dati sono state inizialmente memorizzate in una singola tabella o dovrebbero essere state divise in due? Ci sono implicazioni negative sulla performance se si fa un LEFT JOIN
sulla chiave primaria della prima tabella (che finirebbe per restituire esattamente la stessa struttura) invece di interrogare una singola tabella? Se dovessi creare una struttura simile in futuro dovrei seguire questo disegno o separare i due dubbi?