使用order by时,数字的长度是否会影响mysql的性能?

时间:2013-05-17 15:25:36

标签: mysql

使用order by时,存储在INT(10)列中的数字的长度是否会影响性能。

我目前在INT(10)列中有一些7位长的数字,这些数字是使用order by排序的。

如果订购大量数字会降低性能,我可以尝试别的东西。他们放慢了速度吗?

3 个答案:

答案 0 :(得分:6)

不,它不会影响性能,因为INT类型的固定长度为 4B 。 因此,如果您有1位数字或10位数字,则表现应该相同。

关于INT(N) N的一般错误信息表示要显示的位数,换句话说,INT(1)INT(10)的大小相同

更新如果您要加快ORDER BY部分的速度,可以在该列上添加INDEX

  

在某些情况下,MySQL可以使用索引来满足ORDER BY子句   没有做任何额外的排序。
  即使ORDER BY与之匹配,也可以使用索引   索引完全,只要索引的所有未使用部分和   所有额外的ORDER BY列都是WHERE子句中的常量

DOCS

答案 1 :(得分:1)

括号中的数字不会影响可以存储在字段中的可能值的范围。

  

MySQL支持扩展,可选择指定显示   base关键字后括号中的整数数据类型的宽度   对于类型。例如,INT(4)指定带有显示的INT   宽度为四位数。可选的显示宽度可以使用   应用程序显示宽度小于的宽度值   通过用空格左边填充为列指定的宽度。 (那   是,此宽度存在于结果集返回的元数据中。   是否使用取决于应用程序。)

     

显示宽度不会限制可以存储在列中的值的范围。它也不会阻止价值超过   列显示宽度正确显示。例如,a   指定为SMALLINT(3)的列的通常SMALLINT范围为-32768   到32767,超出三位数允许范围的值是   使用三位数以上完整显示。

答案 2 :(得分:1)

我不认为INT(10)会影响性能,因为该类型是为返回时使用填充值而构建的。关键是如果要调整该列,则应添加索引。 会影响性能。 Int将始终占据相同的足迹。