SQL Server : Identity vs UniqueIdentifier columns

IDENTITY vs UNIQUEIDENTIFIER COLUMN

IDENTITY

Sl No
Advantage
Disadvantage
1
Identity column stores numeric values. Numeric value column have better performance in joins, indexes and conditions.
Range of values stored in identity column based on data type :
bigint
2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
int
-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
smallint
-2^15 (-32,768) to 2^15-1 (32,767)
tinyint
0 to 255
If table size is large, it is quite possible it will run out of it and after some numeric value there will be no additional identity to use.
2
Numeric values are easier to understand for application users if they are displayed.













UNIQUEIDENTIFIER

Sl No
Advantage
Disadvantage
1
·        Unique across server
Uniqueidentifier column has string value i.e. {BAE7DF4-DDF-3RG-5TY3E3RF456AS10}. String values are not as optimal as integer values for performance when used in joins, indexes and conditions.
2
·        Since it is unique across server , allows easy merging of records from different databases
More storage space is required than INT
3
·        Allows easy distribution of databases across multiple servers
4
·        You can generate IDs anywhere, instead of having to roundtrip to the database
5
Most replication scenarios require GUID columns anyway

Leave a Reply