2013-05-11 1069 views
4

我有一些值像3/5,90/100等用哪种数据类型来存储分数?

我必须将这些值存储在我的数据库的单独列中。

我对使用哪种数据类型感到困惑;这对于insertselect操作更快?

+0

你的意思就是3满分5分正确答案 – Drew 2013-05-11 16:11:04

+0

如果知道分子和分母很重要,那么你正在看的也许是一对小对子。但如果您需要快速为您提供seo_score,为什么不计算它并将其保存为小数(5,2)。这样你的查询将不会有飞行计算的开销 – Drew 2013-05-11 16:20:11

+0

我从其他脚本获得seo得分为92/100,我不想操纵它,我只是想以同样的方式存储并显示它同样的方式。请告诉我最好的方法来做到这一点。 – 2013-05-12 02:43:14

回答

1

这取决于你需要的信息。

如果将其存储用于计算和存储,则计算结果(0.92而不是92/100)并将其存储为decimal(1,5)。但是如果要显示它,则无法轻松计算它。

如果存储在稍后时间显示,但永远不会再次修改(或至少不快),则可以将其存储为varchar但这会破坏排序。

或者您可以将不同的元素(正数,负数,总数,...不管)存储为decimal(5,0),并在使用时显示/计算它。

当然,如果您希望在选择时使计算时间超出边界,您可以将上述内容结合起来使用。

+0

感谢您的回复,我有一个网站seo得分92/100,这是从一些PHP脚本计算我想以同样的方式存储它,我不做任何更改,当用户需要它时,我必须像92/100一样显示,所以很容易理解。 – 2013-05-12 02:32:03

+0

抵制使用字符串作为号码信息的诱惑。你或未来你或你的继任者会后悔。从许多工作中学习。 – 2013-05-12 03:21:15

+0

@MichaelDurrant这取决于。我绝不会单独使用它,但是如果选择时间很关键(并且您正在寻找纳米),那么这可能是值得的。我不认为它适合在这种情况下。但是我对OPs情况知之甚少。 – 2013-05-12 15:23:42

0

既然你想保留的价值是相同的,没有把它作为一个DECIMAL,使之能以同样的方式显示给用户:

使用VARCHAR

+1

没有任何进一步的评论,在什么情况下这是一个好主意(当不是!)这不是一个好主意。 – 2013-05-12 15:34:15

+0

@AngeloNeuschitzer由于没有数学需要在SEO分数上执行,OP只是希望它以相同的格式显示回用户。将它保存在'VARCHAR'中将保存它的格式与'INSERT'中保存的格式完全相同。 – 2013-05-13 12:16:24

+0

@Downvoter每年:什么给出? – 2014-07-27 12:58:01

1

两个整数;分子和分母。对于提供分数的合理表示的任何数据类型,插入/存储的速度几乎相同。

相关问题