The goal of using a sequential guid is so you can use clustered indexes without the high levels of fragmentation that would normally exist in a clustered index if it was a regular guid, correct?
Should a Sequential Guid primary key column be a clustered index?
1.8k views Asked by Chris Marisic AtThere are 2 answers
boydc7
On
First to clarify, a primary key and clustered index are 2 separate and distinct things, i.e. one is not coupled to the other (PKs can be nonclustered, clustered indexes can be non-PKs).
That given, I think you're asking more "Should a Sequential GUID be used as a clustered index". That's a loaded question, but Kimberly Tripp has discussed this probably the best of anyone I've seen. Note that the article referes to a PK, but inside the article she refers to how the consideration applies mostly to a clustered index choice vs. a PK.
Assuming you have already decided to use a GUID as the cluster key (which may or may not be the case), the use of a sequential GUID would most likely be a superior choice to a non-sequential GUID, however there is at least 1 scenario where a non-sequential GUID may be preferred (though a very rare, very advanced scenario where you'd have to basically understand your system and SQL server so well that you have no doubt that this should be used - would have to do with hotspots on your storage device and spreading large-volumes of writes across different locations of the cluster).
Related Questions in SQL-SERVER
- Dynamic query creation with Array like implementation
- 'pyodbc.Cursor' object has no attribute 'callproc', mssql with django
- Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl, ${SPRING_DATASOURCE_URL}: GitHub Actions
- PHP Laravel SQLServer could not find driver
- Upsert huge amount of data by EFCore.BulkExtensions
- How to locate relevant tables or columns in a SQL Server database
- Cannot delete SQL datafile (.mdf) as its currently in use
- Writing query in CTE returning the wrong output
- Group By Sum and without Group by sum Amount is different
- plan_handle is always different for each query in SQL Server Cache
- Adding a different string to a table fails
- The specified data type in the EF modelBuilder doesn't correspond to the one that is created
- SQL71561: SqlComputedColumn: When column selected
- How to Solve Error Associated with Trusted Authority
- SQL Server Data Model and Insert Performance
Related Questions in SQL-SERVER-2008
- Why does the following script throw database still in use when selecting the master database first?
- Return Duplicate Rows
- SQL Data entry - finding sequence to enter info
- Why is this query in SSMS showing columns/tables as numbers?
- Query from multiple tables based on the table name?
- How to Let Python Connect to a SQL Server Database
- Need to fetch Minimum value for Each Id and make the BidSuccess column to 1
- Spring Boot Scheduled Annotation Job Issue
- Use different WHERE clause based on condition?
- Error when inserting special characters such as Ñ and accents á, é, í, ó, ú. using BULK OPENROWSET from python
- Delete all records except the max value of a group
- How to use SQL Server stored procedures in React js express server
- Loop through date in SQL Server and exclude the dates within a range of one week
- Find amount greater than the average amount
- Update trigger - both INSERTED and DELETE hold same value after update
Related Questions in GUID
- Argument to method seems to lose scope when method is invoked
- Approach to generate Short Unique key like (AboU8N) in distributed environment?
- An Error On the Served GUID shoudl contain 32... Post Request to retrieve Image not showing in PowerApps
- ldap_search() by GUID in AD with Php
- Azure Devops EF Core migration script GUID PK error
- Fail to convert base64 string when using TryFromBase64String
- UUID to GUID in Android
- Is there any way to create a column of GUID type in pyspark/sql databricks?
- Generating private key with guid in Open SSL
- How to make UWP can auto collect UUID or GUID?
- Query guids with different binary subTypes in the same collection
- Guid value doesn't get inserted properly into the cassandra table
- Razor modal component with GUID as ID
- Header preprocessor unique IDs generation C++
- Transparent Browser for our own web-app and PWA [Using static HTML,CSS and JavaScript][like user can see desktop wallpaper through our web-app/PWA]
Related Questions in CLUSTERED-INDEX
- Does ULID Satisfy MySQL Clustered Index Design for Primary Keys?
- External fragmentation when we do not have clustered index
- Best method for updating SQL Server partition function
- DELETE Command taking a lot of time with clustered index
- impact of writing data out of order relative to clustered index
- What is the difference clustered vs non-clustered index when we calculate number of accesses pages?
- SQL Server not using non clustered index
- Sqlserver how to create composite unique key with one of column is nullable
- BETWEEN SQL - why is there a gap lock?
- when exactly does a lock pseudo-record supremum occur?
- gap locks don't appear in data_locks table - What's happening?
- InnoDB Locking - Does record lock use indexes?
- Clustered index key should be part of the non-clustered index key, but how can I see it?
- Can table have both primary & clustered index together
- Why is this query using the index differently when i change the range of search?
Related Questions in NEWSEQUENTIALID
- newsequentialid() creating non-sequential IDs when inserts are 8s apart
- How to generate sequential alphanumeric string in Java starting with specific string
- Is there an R function to sequentially assign a code to each value in a dataframe, in the order it appears within the dataset?
- Is possible NEWSEQUENTIALID() repeat with NewId()?
- When using NEWSEQUENTIALID() as primary key, what should be my clustered index?
- How to get inserted NewSequentialId value when doing multiple inserts?
- Why is default newsequentialid() not working?
- Creating unique groups in sequential data that repeats through time
- NEWSEQUENTIALID() is broken in SQL Server for linux?
- Generated Sequential GUIDs are sometimes not sequential
- how could i change i initial value of NEWSEQUENTIALID() for sqlserver
- newseqeuntialID vs bigint on replicated database
- Clustered GUID column and newsequentialid across servers
- SQL New Column Error Because of Newsequentialid
- How to sort sequential GUIDs in C#?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Yes, you are correct.