Clustered primary key on unique identifier ID column in SQL Server

耗尽温柔 提交于 2019-12-17 16:50:57

问题


If your ID column on a table is a unique identifier (Guid), is there any point creating a clustered primary key on the ID column?

Given that they are globally unique, how would the sorting work?


回答1:


GUIDs as they are are terrible for performance since they are effectively random values (this "breaks" clustered index), and they are awful for indexes, since less entries fit on a single page/extent (SQL Server terms). SQL Server 2005 introduces newsequentialid() which helps solving first problem.




回答2:


I strongly advise against using clustered Guid key... We had big performance issues on SQL server because of such poor design a few years ago.

Also check out: Improving performance of cluster index GUID primary key




回答3:


Putting a clustered index on a guid column is not such a good idea (unless you're making use of sequential guids).

The clustered index determines the physical order of how the records are stored.
This means that, if you put a clustered index on a column that does not sequentially grow, SQL Server will have some work making sure that the records are correctly ordered physically when you insert new records.




回答4:


The idea of having a sorted index is very good in itself as searching then becomes very efficient.

The problem however is that in case of a GUID one never searches with "WHERE GUID = xyz". So the whole concept is wasted. So I would suggest to rather have a clustered index on a column which is used most often as a SARG to increase the query efficiency.



来源:https://stackoverflow.com/questions/713430/clustered-primary-key-on-unique-identifier-id-column-in-sql-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!