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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top