Зачем кому-то использовать числовой (12, 0) тип данных для простого столбца с целочисленным идентификатором? Если у вас есть причина, почему это лучше, чем int или bigint, я бы хотел это услышать.
Мы не занимаемся математическими вычислениями в этом столбце, это просто идентификатор, используемый для связи с внешним ключом.
Я составляю список ошибок программирования и проблем с производительностью продукта, и я хочу быть уверен, что они не сделали этого по какой-то логической причине. Если вы перейдете по этой ссылке:
http://msdn.microsoft.com/en-us/library/ms187746.aspx
... вы можете видеть, что числовое значение (12, 0) использует 9 байтов памяти и ограничено 12 цифрами, то есть, в общей сложности, 2 триллиона чисел, если вы включаете отрицательные значения. ПОЧЕМУ человек использовал бы это, когда мог бы использовать bigint и получить в 10 миллионов раз больше чисел с одним байтом меньше памяти. Кроме того, поскольку он используется в качестве идентификатора продукта, 4 миллиардов чисел стандартного int было бы более чем достаточно.
Итак, прежде чем я возьму факелы и вилы - скажи мне, что они собираются сказать в свою защиту?
И нет, я ничего не делаю из ничего, в программном обеспечении есть сотни подобных проблем, и все это вызывает огромную проблему с производительностью и занимает слишком много места в базе данных. И мы заплатили более миллиона долларов за это дерьмо ... поэтому я отношусь к этому довольно серьезно.