在 MySQL 資料庫設計中,選擇適當的整數類型對於優化儲存空間和查詢效能至關重要。MySQL 提供了多種整數類型,每種類型都有其特定的範圍和儲存需求。本文將詳細介紹各種整數類型的特性,幫助您在設計資料表時做出最佳選擇。
| 類型 | 儲存大小 | 有號範圍 | 無號範圍 |
|---|---|---|---|
| TINYINT | 1 位元組 | -128 到 127 | 0 到 255 |
| SMALLINT | 2 位元組 | -32,768 到 32,767 | 0 到 65,535 |
| MEDIUMINT | 3 位元組 | -8,388,608 到 8,388,607 | 0 到 16,777,215 |
| INT / INTEGER | 4 位元組 | -2,147,483,648 到 2,147,483,647 | 0 到 4,294,967,295 |
| BIGINT | 8 位元組 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0 到 18,446,744,073,709,551,615 |
最小的整數類型,僅佔用 1 位元組。適用於儲存狀態碼、布林值(0/1)、年齡等小範圍數值。有號範圍為 -128 到 127,無號範圍為 0 到 255。
佔用 2 位元組。有號範圍為 -32,768 到 32,767,無號範圍為 0 到 65,535。常用於儲存較小範圍的計數器、年份等。
佔用 3 位元組,是 MySQL 特有的類型。有號範圍約 ±838 萬,無號範圍約 1,677 萬。介於 SMALLINT 和 INT 之間,適合中等範圍數值。
最常用的整數類型,佔用 4 位元組。有號範圍約 ±21 億,無號範圍約 42 億。適用於大多數業務場景的 ID、計數器、數量等欄位。
最大的整數類型,佔用 8 位元組。有號範圍極大(約 ±922 兆兆),無號範圍約 1,844 兆兆。適用於儲存極大數值,如大型系統的自增主鍵、時間戳微秒值等。
原文中提到的「smallint unsigned 的範圍是 –2^15 到 2^15 – 1」有誤。SMALLINT UNSIGNED 的正確範圍應為 0 到 65,535(2^16 - 1)。有號 SMALLINT 才是 -32,768 到 32,767。請務必以官方文件為準。