簡體   English   中英

為 SQL 服務器中的數字列選擇最佳數據類型

[英]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) 。! 那只會在以后給你帶來無法估量的悲傷和頭痛。

選擇很明確:

  • 如果你有整數- 使用TINYINTSMALLINTINTBIGINT - 取決於你需要的數字范圍

  • 如果您需要小數- 使用DECIMAL(p,s)以獲得最佳和最穩健的行為(沒有像FLOATREAL這樣的舍入錯誤)

選擇最合適的數據類型比任何存儲的微優化都重要得多。 即使有 4000 萬行 - 這仍然不是一個大問題,無論您使用 4 字節還是 8 字節。 無論您使用數字類型還是字符串類型 - 這都會對數據庫的可用性和處理產生巨大影響!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM