根据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下进行了单独讨论。在该页面上,它以数字表示“显示宽度”,限制了显示值时的最小宽度。它特别指出“显示宽度不限制可以存储在列中的值的范围”。因此无法根据该提示向下调整分配的存储空间。

10-08 16:24