Php mysql以非常大的数字对行进行排序。装载时间

Php mysql以非常大的数字对行进行排序。装载时间,php,mysql,Php,Mysql,我正面临两难境地。我通过两个字段从表中提取数据: **field 1** 1979385197241 1235467 95823352353 9089892189735 versus **field 2** 6 2 7 2 1 假设该表有大约2000行和40个字段。加载时间会有很大的变化吗?我应该按一个字段或另一个字段进行订购吗 我这样问是因为较大的数字是实时的,较小的数字由cronjob根据较大的数字进行更新。如果我按字段2对行进行排序,我将得到实时结果。不需

我正面临两难境地。我通过两个字段从表中提取数据:

**field 1**             
1979385197241 
1235467
95823352353
9089892189735

versus

**field 2**
6
2
7
2
1
假设该表有大约2000行和40个字段。加载时间会有很大的变化吗?我应该按一个字段或另一个字段进行订购吗


我这样问是因为较大的数字是实时的,较小的数字由cronjob根据较大的数字进行更新。如果我按字段2对行进行排序,我将得到实时结果。不需要cronjob。

如果您关心排序的性能,那么最重要的是正确使用索引。您通常应该在希望在
ORDER BY
子句中使用的列上


然而,由于您的表中只有2000行,我想即使没有索引,它也会非常快。

最好同时测试这两种方法,但我不认为按字段2排序会导致任何性能损失。

按数字排序是一种二进制比较操作,对于处理器的整数大小(通常为32位)以内的任何内容,都会在相同的时间内发生。在任何一种情况下,这两个数字都可能在单处理器指令中进行比较(英特尔汇编:cmp。加载寄存器和检查值的时间无法承受…)。只有在具有64位数字且两个数字的前32位相同的32位系统上,比较较大的数字和较小的数字会花费更多的时间。所有排序操作都是通过一次比较两个数字来完成的


实际上,永远不要担心正在排序的数字的大小。999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999CMP1——与2 CMP1的时间相同——我们立即知道,我们不必检查第一个9字符串的完整长度。

如果@domino订购整个列表或选择前10个,索引可能就是他想要的。如果选择条件意味着选定的行分散在整个索引中,则索引没有帮助。只是作为一个新的SQL开发人员需要记住的东西<代码>解释…可以用来告诉您,如果事情不按预期运行,服务器实际在使用什么。-1:通过测试两种方法鼓励无用的冗余工作。