Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What data type is GUID in SQL server?

How is GUID internally stored and compared by SQL (particularly MS SQL server 2008)? Is it a number or string? Also, is there a big performance hit when using GUID as primary key?

Besides the problem with clustering mentioned here: What are the best practices for using a GUID as a primary key, specifically regarding performance?

I think it should be 128bit number (as described here), but I cannot find mode details on how is it implemented in SQL server.

like image 489
Ondrej Peterka Avatar asked May 13 '13 11:05

Ondrej Peterka


Video Answer


1 Answers

Performance wise, normal GUID is slower than INT in SQL Server

If you plan to use GUID, use uniqueidentifier instead of varchar as data type. Microsoft did not mention how they implement it, there is some speed optimization when you use uniqueidentifier as the data type.

To use GUID as primary key without sacrificing speed of integer, make the GUID value sequential. Define uniqueidentifier data type as PK, set the default to NEWSEQUENTIALID().

See NEWSEQUENTIALID (Transact-SQL) for further details.

As to how sequential GUID values help performance, see The Cost of GUIDs as Primary Keys.

like image 119
MikeLim Avatar answered Sep 21 '22 19:09

MikeLim