sql >> Database >  >> RDS >> Sqlserver

Moet een primaire sleutelkolom met Sequential Guid een geclusterde index zijn?

Allereerst om te verduidelijken:een primaire sleutel en geclusterde index zijn 2 afzonderlijke en verschillende dingen, d.w.z. de ene is niet aan de andere gekoppeld (PK's kunnen niet-geclusterd zijn, geclusterde indexen kunnen niet-PK's zijn).

Dat gegeven, denk ik dat je meer vraagt ​​"Moet een sequentiële GUID worden gebruikt als een geclusterde index". Dat is een beladen vraag, maar Kimberly Tripp heeft dit besproken waarschijnlijk de beste van iedereen die ik heb gezien. Merk op dat het artikel verwijst naar een PK, maar in het artikel verwijst ze naar hoe de overweging meestal van toepassing is op een geclusterde indexkeuze versus een PK.

Ervan uitgaande dat u al hebt besloten om een ​​GUID als clustersleutel te gebruiken (wat al dan niet het geval kan zijn), zou het gebruik van een sequentiële GUID hoogstwaarschijnlijk een betere keuze zijn dan een niet-sequentiële GUID, maar er is minstens 1 scenario waarin een niet-sequentiële GUID de voorkeur kan hebben (hoewel een zeer zeldzaam, zeer geavanceerd scenario waarbij u uw systeem en SQL-server in principe zo goed moet begrijpen dat u er geen twijfel over heeft dat dit moet worden gebruikt - zou te maken hebben met hotspots op uw opslagapparaat en het verspreiden van grote schrijfvolumes over verschillende locaties van het cluster).




  1. mysqldump Best Practices:Deel 2 – Migratiegids

  2. FOUT:null-waarde in kolom-ID schendt niet-null-beperking

  3. Shell-script met sqlplus en speciale tekens op wachtwoord

  4. Entity Framework Code-First te traag bij opstarten