排序和索引排名为Bigint或Float

时间:2012-01-27 01:23:42

标签: mysql sorting floating-point sql-order-by

使用MySql。我有一个用户表,需要在其中一列中存储用户的排名。应用程序确定排名,它恰好是签名浮点数。排名的例子是:

7732.5366604
7733.0252967
7740.8813879
-7736.5642667
-42.0223467
81121.3647382

所以基本上我总是在"之后至少有七个位置。"并且号码已签名。

我需要在这个字段上创建索引并按顺序创建它。

根据我的理解,我有两个选择:

  1. 将数字存储在最合适的mysql类型中(float?)

  2. 格式化值以删除点(在应用程序层中)并将其存储为带符号的bigint,以便-7736.5642667将成为-77365642667。如果由于某种原因我在点之后没有7个位置,我会附加零,这样:234.34565将变为234.3456500然后变为2343456500

  3. 我想知道两者中哪一个在存储,索引和排序方面会更快。

    感谢并感谢任何意见。

1 个答案:

答案 0 :(得分:0)

我不了解索引背后的算法在索引int和float之间的区别,但我会对大数据集进行基准测试。如果性能没有差异,那么我会使用float,因为这是你的数字而你不需要做任何格式化。