爲列選擇正確的類型
爲了獲得最佳存儲,應該在所有情況下都儘量使用最精確的類型。例如,如果整數列用於1到99999之間的值,則MEDIUMINT UNSIGNED是最佳類型。在表示所有必需值的類型中,此類型使用的存儲量最少。
所有針對DECIMAL列的基本計算(+、-、*、和/)都以65位十進制(以10爲基數)的精度完成。
如果精度不太重要,或者如果速度是最重要的,DOUBLE類型可能就足夠了。爲了獲得高精度,可以轉換爲存儲在BIGINT中的定點類型。這使您能夠使用64位整數執行所有計算,然後根據需要將結果轉換回浮點值。
使用來自其他數據庫引擎的數據類型
爲了方便使用其他供應商爲SQL實現編寫的代碼,MySQL映射了如下表所示的數據類型。這些映射使得從其他數據庫系統向MySQL導入表定義變得更加容易。
其他供應商類型 | MySQL類型 |
---|---|
BOOL | TINYINT |
BOOLEAN | TINYINT |
CHARACTER VARYING(M) | VARCHAR(M) |
FIXED | DECIMAL |
FLOAT4 | FLOAT |
FLOAT8 | DOUBLE |
INT1 | TINYINT |
INT2 | SMALLINT |
INT3 | MEDIUMINT |
INT4 | INT |
INT8 | BIGINT |
LONG VARBINARY | MEDIUMBLOB |
LONG VARCHAR | MEDIUMTEXT |
LONG | MEDIUMTEXT |
MIDDLEINT | MEDIUMINT |
NUMERIC | DECIMAL |
數據類型映射發生在表創建時,之後原始類型規範將被丟棄。如果使用其他供應商使用的類型創建一個表,然後發出DESCRIBE tbl_name語句,那麼MySQL將使用等效的MySQL類型報告表結構。例如:
官方文檔:
https://dev.mysql.com/doc/refman/8.0/en/choosing-types.html
https://dev.mysql.com/doc/refman/8.0/en/other-vendor-data-types.html