2014-06-22 68 views
0

例如要存儲Windows 8我有三個選項。商店縮寫或完整標籤?

1) WI8 
    2) Windows 8 
    3) Win 8 

我不確定哪個是最好的。該列已編入索引,我使用GROUP BY。由於輸出結果我需要Windows 8。該表每秒獲得許多INSERT。性能非常重要。

+0

對不起,但我不明白你的問題。你問你是否可以儲存「蘋果」和檢索「橙色」? –

+0

不,但是例如,對於我通常看到人們將其存儲在國家代碼「德國 - DE」中的國家/地區。但是他們想要的輸出是'德國'。那麼他們爲什麼這樣做呢? – yoshi

+0

如果性能非常重要,最好的做法可能是改變你的表格結構。然後創建一個包含您所有操作系統的查找表,然後給每個數字ID,然後將該數字插入到表中的OSID字段中,而不是保存該字符串。您不需要保存每條記錄的文本值。否則,我認爲最短的字符串可能是最有效的,但可能會使數據更難以理解。 – VBlades

回答

0

在關係數據庫方面,有兩種類型的主鍵:

  • 一個natural key是已經在現實世界中存在的屬性形成的關鍵:社會安全號碼,郵編,全名稱...

  • surrogate key是一個唯一的標識符,不從應用程序數據導出:一個相關整數,a UUID ...

自然鍵具有隨時間變化的壞習慣,並增加了可怕的維護負擔。而就你而言,你甚至沒有明確的候選人,因爲真實世界價值的許多別名是預期的。所以在你描述的例子中沒有什麼理由使用自然鍵。

在MySQL中,在AUTO_INCREMENT功能中生成代理鍵的標準方式。

(請注意,這是一個基本的概念,你必須熟悉不管你打算做什麼。在大宗插入性能問題是一個完全不同的故事,不同層次必須加以解決。)