2014-06-22 34 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功能中生成代理键的标准方式。

(请注意,这是一个基本的概念,你必须熟悉不管你打算做什么。在大宗插入性能问题是一个完全不同的故事,不同层次必须加以解决。)