Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any reason for numeric rather than int in T-SQL?

Why would someone use numeric(12, 0) datatype for a simple integer ID column? If you have a reason why this is better than int or bigint I would like to hear it.

We are not doing any math on this column, it is simply an ID used for foreign key linking.

I am compiling a list of programming errors and performance issues about a product, and I want to be sure they didn't do this for some logical reason. If you follow this link: http://msdn.microsoft.com/en-us/library/ms187746.aspx

... you can see that the numeric(12, 0) uses 9 bytes of storage and being limited to 12 digits, theres a total of 2 trillion numbers if you include negatives. WHY would a person use this when they could use a bigint and get 10 million times as many numbers with one byte less storage. Furthermore, since this is being used as a product ID, the 4 billion numbers of a standard int would have been more than enough.

So before I grab the torches and pitch forks - tell me what they are going to say in their defense?

And no, I'm not making a huge deal out of nothing, there are hundreds of issues like this in the software, and it's all causing a huge performance problem and using too much space in the database. And we paid over a million bucks for this crap... so I take it kinda seriously.

like image 299
Jasmine Avatar asked Jan 13 '09 21:01

Jasmine


People also ask

What does numeric do in SQL?

Numeric Data TypesAllows numbers from -10^38 +1 to 10^38 –1. The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.

What is difference between decimal and integer in SQL?

According to the MSDN library, the storage space of the DECIMAL(5,0) datatype is, just like the DECIMAL(9,0) datatype, 5 bytes. INT is 1 byte smaller, but can store everything in the range of -2^31 to 2^31 instead of the -99,999 to 99,999 which DECIMAL(5,0) can store.

Why do we use int in SQL?

The int data type is the primary integer data type in SQL Server. The bigint data type is intended for use when integer values might exceed the range that is supported by the int data type.


2 Answers

Perhaps they're used to working with Oracle?

All numeric types including ints are normalized to a standard single representation among all platforms.

like image 136
Mark Harrison Avatar answered Oct 15 '22 15:10

Mark Harrison


There are many reasons to use numeric - for example - financial data and other stuffs which need to be accurate to certain decimal places. However for the example you cited above, a simple int would have done.

Perhaps sloppy programmers working who didn't know how to to design a database ?

like image 36
no_one Avatar answered Oct 15 '22 15:10

no_one