使用 order by 时,存储在 INT(10) 列中的数字的长度是否会影响性能。
我目前在 INT(10) 列中有一些 7 位长数字,这些数字是使用 order by 排序的。
如果订购大量产品会降低性能,我可以尝试其他方法。他们放慢速度吗?
使用 order by 时,存储在 INT(10) 列中的数字的长度是否会影响性能。
我目前在 INT(10) 列中有一些 7 位长数字,这些数字是使用 order by 排序的。
如果订购大量产品会降低性能,我可以尝试其他方法。他们放慢速度吗?
不,它不会影响性能,因为INT
类型的固定长度为4B。
因此,如果您有 1 位数字或 10 位数字,性能应该是相同的。
它也是关于INT(N)
N 表示要显示的位数的一般错误信息,换句话说INT(1)
,它的大小与INT(10)
更新,如果你想加快ORDER BY
你可以INDEX
在该列上添加的部分
在某些情况下,MySQL 可以使用索引来满足 ORDER BY 子句,而无需进行任何额外的排序。
即使 ORDER BY 与索引不完全匹配,也可以使用索引,只要索引的所有未使用部分和所有额外的 ORDER BY 列都是 WHERE 子句中的常量
括号中的数字不影响可以存储在字段中的可能值的范围。
MySQL 支持扩展,用于在类型的 base 关键字后面的括号中可选地指定整数数据类型的显示宽度。例如,INT(4) 指定显示宽度为四位的 INT。应用程序可以使用此可选显示宽度来显示宽度小于为列指定的宽度的整数值,方法是用空格向左填充它们。(也就是说,这个宽度存在于与结果集一起返回的元数据中。是否使用它取决于应用程序。)
显示宽度不限制可以存储在列中的值的范围。它也不会阻止正确显示比列显示宽度更宽的值。例如,指定为 SMALLINT(3) 的列的 SMALLINT 范围通常为 -32768 到 32767,超出三位数允许范围的值将使用多于三位数完整显示。
我不认为 INT(10) 会影响性能,因为该类型被构建为在返回时对值使用填充。关键是,如果您想调整该列,您应该添加一个索引。那会影响性能。Int 将始终占用相同的足迹。