Sql-Server

何時在 INT 上使用 TINYINT?

  • September 3, 2021

一般來說,我總是使用整數。我知道理論上這不是最佳實踐,因為您應該使用可以保證儲存數據的最小數據類型。

例如,tinyint當您知道您將儲存的唯一數據是 1、0 或 null(稍後將其擴展為 2 或 3 的可能性很小)時,最好使用它。

但是,我知道這樣做的唯一原因是出於儲存目的——在一行上使用 1 個字節而不是 4 個字節。

除了節省硬碟空間之外,使用tinyint(或smallintbigint至)超過 just有什麼影響?int

磁碟空間很便宜……這不是重點!

不要再考慮儲存空間,而是考慮緩衝池和儲存頻寬。在極端情況下,CPU 記憶體和記憶體匯流排頻寬。連結的文章是該系列文章的一部分,重點介紹了集群鍵選擇不佳(INT vs GUID vs Sequential GUID)的問題,但它強調了字節可以產生的差異。

最重要的資訊是設計問題。在您達到 VLDB 領域之前,差異不會顯示在適當規範的伺服器上的單個數據庫中,但如果您可以節省幾個字節,為什麼不這樣做。

我想起了前面問題中描述的環境。每個 SQL 實例有 400 多個數據庫,大小從 50mb-50GB 不等。在該環境中為每個記錄、每個表、每個數據庫清理幾個字節可能會產生重大影響。

引用自:https://dba.stackexchange.com/questions/4968