[英]Choosing best datatype for numeric column in SQL Server
我在 SQL 服務器中有一張表,其中包含大量數據 - 大約 4000 萬行。 基本結構是這樣的:
標題 | 類型 | 長度 | Null經銷 |
---|---|---|---|
客戶ID | 數字 | 8 | 60% |
卡系列 | 數字 | 5 | 70% |
- | - | - | - |
- | - | - | - |
筆記 | 字符串-unicode | 2000 | 40% |
兩個數字列都由具有特定長度的數字填充。
我不知道選擇哪種數據類型來擁有最小大小的數據庫並通過索引customerId
列來獲得良好的性能。 如果我選擇CHAR(8)
,請參閱這篇文章,即使在 null 數據中,數據庫每行消耗 8 個字節。
我決定使用INT
來減小數據庫大小並擁有良好的索引,但 null 數據將再次使用每行 4 個字節。 如果我想減小這個大小,我可以使用VARCHAR(8)
,但我不知道,系統在設置索引這個類型上是否有很好的性能。 主要問題是減少數據庫大小很重要,或者對數字類型有良好的索引。
謝謝。
如果它是一個數字- 那么一定要選擇一個數字數據類型! 不要將您的數字存儲為char(n)
或varchar(n)
。! 那只會在以后給你帶來無法估量的悲傷和頭痛。
選擇很明確:
如果你有整數- 使用TINYINT
、 SMALLINT
、 INT
或BIGINT
- 取決於你需要的數字范圍
如果您需要小數- 使用DECIMAL(p,s)
以獲得最佳和最穩健的行為(沒有像FLOAT
或REAL
這樣的舍入錯誤)
選擇最合適的數據類型比任何存儲的微優化都重要得多。 即使有 4000 萬行 - 這仍然不是一個大問題,無論您使用 4 字節還是 8 字節。 無論您使用數字類型還是字符串類型 - 這都會對數據庫的可用性和處理產生巨大影響!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.