I am writing an MVC5 Internet application and I have a question about the id field for a model.
Should I use an int or a long for the id in a model? I am talking about the field that is used for the primary key? Is an int enough if the database has 100,000s of records? Is an int in c# different than an int in a SQL database?
Thanks in advance
Both are OK. It depends on how many records will be in a table. Int allows only 2*10^9 records per table.
If you are sure, that 2*10^9 is enough, use int as a key.
But: If there is a tiny chance that count of records will be more than 2*10^9, use the long. If you don't have any idea how many records you'll have, use long.
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. With BIGINT
, you get roughly 922 quadrillion (922 with 15 zeros - 922'000 billions) - enough for you??
If you use an INT IDENTITY
starting at 1, and you insert one row every second, around the clock, you need 66.5 years before you hit the 2 billion limit ....
If you use a BIGINT IDENTITY
(BIGINT
in T-SQL is defined as long
or Int64
in .NET languages) starting 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.