MYSQL存储id或描述性文本以提高性能

时间:2012-02-17 16:47:14

标签: php mysql normalization

请原谅我缺乏知识。我正在创建一个php / mysql网站,它将存储各种汽车广告的记录。每个广告记录将包含汽车模型和汽车制造数据以及描述,价格等......

在我的创建广告表单上,我有2个选择字段,用于从包含所有品牌的ID和汽车品牌的表格中查找汽车品牌和型号,以及所有型号的ID,汽车品牌和汽车模型。

我的问题是,当我选择广告创建表单上的数据时,最好是获取ID,汽车制作,然后只将“id”存储在我的广告表中,或者我应该存储实际的“汽车制造” “和”汽车模型“在我的数据库的广告表中?

我认为只是id会更快地用于搜索目的,然后当我查找要显示的数据时,我将需要获取id并在汽车制造和模型表上进行连接以获得汽车制造和模型要显示的描述。

性能会好得多吗?或者它只是在每个广告记录中存储汽车品牌和型号没有区别,所以我不需要在以后显示它们的连接吗?

3 个答案:

答案 0 :(得分:0)

想想人们将如何使用该网站。用户可能有办法按品牌或型号进行搜索。因此,将信息规范化非常重要。在创建列表时让人们输入'Chevy'和其他人输入'Chevrolet'将导致各种问题。最好有一个包含该信息的Makes表,并在广告表中包含一个外部的make_id字段。

答案 1 :(得分:0)

存储ID。除了性能之外,这可以为您提供适当的数据规范化。

考虑制造商将名称从“Datsun”更改为“Nissan”的情况。通过存储ID,您只能在查找表中的一个位置进行更改。如果您存储了名称,则必须更新包含“Datsun”的每个广告行。

答案 2 :(得分:0)

您所谈论的是数据库架构(de)规范化。我强烈建议在获取数据时存储ID并执行JOIN。然后有些人在你有更多的&很多流量你可以开始考虑对模式进行非规范化(即出于性能原因包括“内联”的东西)。