Come sostituire tutti i GUID non sequenziali con quelli sequenziali?
-
06-07-2019 - |
Domanda
Ho un database SQL Server 2005 sul campo marrone che utilizza GUID standard non ordinati come la maggior parte dei valori delle chiavi primarie e anche in indici cluster (il che è negativo per le prestazioni).
Come devo fare per cambiarli in GUID sequenziali? Una delle sfide sarebbe quella di sostituire tutti i valori della chiave esterna mentre cambio ciascuna chiave primaria.
Conosci strumenti o script per eseguire questo tipo di conversione?
Soluzione
ricorda che puoi usare solo la funzione newsequentialid () come predefinita
quindi crea una nuova tabella con 2 colonne. Inserisci la chiave della tabella originale in questa (lascia fuori l'altra colonna che si riempirà da sola)
torna alla tabella originale e aggiorna il PK con il newsequantialid, se hai un aggiornamento in cascata gli FK dovrebbero aggiornarsi da soli
Altri suggerimenti
Come fai a sapere che non va bene per le prestazioni?
Il vantaggio dei GUID è che non devi preoccuparti di più processi che creano record contemporaneamente. Può semplificare notevolmente il tuo codice, a seconda del programma.
SequentialGuids sono i migliori per le prestazioni quando Guid è il PK. Questa è la ragione dietro la loro esistenza.