Giusto ieri
Andrea Montanari mi ha segnalato l'ennesima Extended Stored Procedure di
Gert Drapers, quest'ultima dedicata alla generazione di GUIDs sequenziali.
A cosa potrebbe servire? Vediamo un esempio.
La funzione
NEWID() di SQL Server 2000 genera valori che sono più o meno random.
Nel caso in cui si decida di definire un indice su una colonna GUID valorizzata tramite
NEWID(), possono sorgere seri problemi di page splitting dato che le righe saranno inserite in modo casuale nel leaf level delle index pages (nel caso di indici clustered ricordiamo che il leaf level dell'indice coincide con le data pages) e questo obbliga il DBA alla ricostruzione regolare degli indici.
L'XP
xp_guid_new_sequential_guid e la funzione
fn_new-sequential_guid() generano invece GUIDs sequenziali, eliminando di fatto il problema della frammentazione degli indici dato che tutte le nuove righe saranno accodate (un po' come avviene definendo un indice clustered su una colonna avente l'attributo
IDENTITY).
Trovate la documentazione completa ed il link per il download a partire dalla seguente pagina:
http://www.sqldev.net/xp/xpguid.htm
Sul sito
SQLDev.Net troverete decine di altre XP estremamente utili ed interessanti che potrete utilizzare quotidianamente nei vostri progetti