Müşterilerimizden biri DECIMAL(18,0)
SQL Server 2008R2 veritabanındaki bazı veri sütunlarını kullanır . Sütunlar oldukça yavaş büyüdüğü için, yakın zamanda bir DECIMAL(5,0)
miktar depolamayı yeniden kazanmak için veri türünü değiştirmeyi önerdi .
MSDN kitaplığına göre , DECIMAL(5,0)
veri tipinin depolama alanı , tıpkı veri tipi gibi DECIMAL(9,0)
, 5 bayttır. INT
1 bayt daha küçüktür, ancak her şeyi saklayabilen -99,999 ila 99,999 yerine -2 ^ 31 ila 2 ^ 31 aralığında DECIMAL(5,0)
saklayabilir. DECIMAL
5 bayta ( DECIMAL(9,0)
) uyan en büyükler bile yalnızca -999,999,999 ila 999,999,999 aralığındaki ( INT
4 baytlık aralık tekliflerinin yarısından daha az) tamsayıları depolayabilir .
Ben DECIMAL
üzerinde kullanarak iki "faydaları" düşünebilirsiniz INT
:
- Daha fazla depolama alanı kullanmadan ölçek ekleyebilme
- Veri türünü değiştirmeden hassasiyeti 38 basamağa kadar ölçeklendirme yeteneği
ama bunlar benim görüşüme göre gerçek faydalar değil:
- Tamsayılara ölçek eklemek çok az durumda mantıklıdır (ölçeğin fark yarattığı çoğu durumda, önceden de eklenebilir)
- SQL Server her kesinlik / ölçek kombinasyonunu farklı bir veri türü olarak görür, bu nedenle kesinlik veya ölçek artırılırken veri türü tek başına bırakılmaz.
Bu beni meraklandırıyor: DECIMAL(5,0)
Tamsayılar için bir veri tipinin ek yararı nedir?
decimal(x,0)
Tam sayı tipi ile tamsayı arasındaki bir fark da aritmetik bölünmede kendini gösterir. Bir int'i int ile böldüğünüzde int alırsınız. Ondalık (x, 0) değerini int ile böldüğünüzde, ondalık (x + 6,6) elde edersiniz.