I have a large transaction table in SQL server which is used to store about 400-500 records each day. What is the data type should I use in my PK column? The PK column stores numeric values, for which integer seems suitable but I’m afraid it will exceed the maximum value for integer since I have so many records everyday.
I am currently using integer data type for my PK column.
With a type
INT, starting at 1, you get over 2 billion possible rows – that should be more than sufficient for the vast majority of cases. WithBIGINT, you get roughly 922 quadrillion (922 with 15 zeros – 922’000 billions) – enough for you??If you use an
INT IDENTITYstarting at 1, and you insert a row every second, you need 66.5 years before you hit the 2 billion limit …. so with 400-500 rows per day – it will take centuries before you run out of possible values… take 1’000 rows per day – you should be fine for 5883 years – good enougH?If you use a
BIGINT IDENTITYstarting at 1, and you insert one thousand rows every second, you need a mind-boggling 292 million years before you hit the 922 quadrillion limit ….Read more about it (with all the options there are) in the MSDN Books Online.