2013-05-11 105 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

兩個整數;分子和分母。對於提供分數的合理表示的任何數據類型,插入/存儲的速度幾乎相同。

相關問題