根据this (Dutch) webpage的说明,如果期望的数字不超过9999(4位数字),则应使用SMALLINT
,因为INT
会保留过多的系统资源(自由解释)。但是,如果数字是有限的(如SMALLINT(4)
和INT(4)
),这还算吗?
最佳答案
首先,SMALLINT
的上限不是9999,而是32767-数字不是以十进制存储的,因此数字的十进制表示形式中的位数与数字无关。因此,例如,对于不超过9999的数字,它是正确的类型,对于不超过19999的数字,它也是正确的类型。
其次,每种类型所需的存储在the MySQL manual page describing the types上给出。更大的类型肯定会保留更多资源;他们是否储备过多是另一回事。
您所指的INT(4)
语法是MySQL的特定功能,在手册的Numeric Type Attributes下进行了单独讨论。在该页面上,它以数字表示“显示宽度”,限制了显示值时的最小宽度。它特别指出“显示宽度不限制可以存储在列中的值的范围”。因此无法根据该提示向下调整分配的存储空间。