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