We use GUIDs for primary key, which you know is clustered by default.
When inserting a new row into a table it is inserted at a random page in the table (because GUIDs are random). This has a measurable performance impact because the DB will split data pages all the time (fragmentation). But the main reason I what a sequential GUID is because I want new rows to be inserted as the last row in the table... which will help when debugging.
I could make a clustered index on CreateDate
, but our DB is auto-generated and in development, we need to do something extra to facilitate this. Also, CreateDate
is not a good candidate for a clustered index.
Back in the day, I used Jimmy Nielsons COMB's, but I was wondering if there is something in the .NET framework for this. In SQL 2005 Microsoft introduced newsequentialid()
as an alternative to newid()
, so I was hoping that they made a .NET equivalent because we generate the ID in the code.
PS: Please don't start discussing if this is right or wrong, because GUIDs should be unique etc.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…