DataType--數值類型


SQL Server數值類型可以分為精確數字類型和近似數字類型
精確數字
BIT/SMALLINT/TINYINT/INT/BIGINT
NUMERIC/DECIMAL/SMALLMONEY/MONEY
 
近似數字
FLOAT/REAL
--================================================
類型: bigint
范圍: -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)
存儲: 8 字節
 
類型: int
范圍: -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
存儲: 4 字節
 
類型: smallint
范圍: -2^15 (-32,768) 到 2^15-1 (32,767)
存儲: 2 字節
 
類型: tinyint
范圍: 0 到 255
存儲: 1 字節
--================================================
decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]
固定精度和小數位數。使用最大精度時,有效值從 - 10^38 +1 到 10^38 - 1。
numeric 在功能上等價於 decimal。
默認精度為 18。
p(精度)最多可以存儲的十進制數字的總位數,包括小數點左邊和右邊的位數
s (小數位數)小數點右邊可以存儲的十進制數字的最大位數。
decimal和numeric的存儲空間與精度相關
精度:  1 - 9
存儲字節數:5
 
精度:  10-19
存儲字節數: 9
 
精度: 20-28
存儲字節數: 13
 
精度: 29-38
存儲字節數: 17
 
--================================================
貨幣數據類型
類型: money
范圍:  -922,337,203,685,477.5808 到 922,337,203,685,477.5807
存儲:  8 字節
 
類型:smallmoney
范圍:   -214,748.3648 到 214,748.3647
存儲:  4 字節
 
--================================================

浮點數類型
浮點數據為近似值;並非數據類型范圍內的所有值都能精確地表示。
類型: real
范圍: -3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38
存儲: 4 字節
類型: float
范圍: -1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308
float [ ( n ) ] 其中 n 為用於存儲 float 數值尾數的位數(以科學記數法表示)
當n在 1-24 區間時,精度為 7,存儲空間為 4 字節
當n在 25-53 區間時,精度為 15,存儲空間為 8 字節
real相當於float(24)
由於float存放范圍內的近似值,不用精確地存儲范圍內所有可能的值,所有在相同的存儲空間內,浮點數可以存放比精確類型范圍更大的數據
浮點數在存放和讀取時,需要按照一定公式對數據進行轉換,因此會有一定的性能損耗

 
--================================================
在考慮數據類型時,需要考慮以下方面:
1>數據范圍和精度
2>類型占用的空間
3>類型是簡單類型還是復雜類型,復雜類型會造成額外的消耗
  Simple data types align more directly to native processor types. Complex data types require CPU to review type metadata and to perform branching.

4>類型是定長還是邊長,變成類型在數據更新時可能造成數據移動和頁拆分
Because a variable-length data type may incur a memcpy when moving, causing additional CPU overhead, use a fixed 8-byte or 4-byte integer assignment if possible.

5>類型的存儲形式,近似數值類型在讀取和存放時需要額外的轉換
Incurs less overhead if the data type is composed of native literals (e.g., int, uint, long, ulong) instead of approximate data types (e.g., float).

6>壓縮后的存儲空間
A.不同的數值類型壓縮比不一樣
B.相同的數據值類型的值大小不一樣,壓縮后存放空間不一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM