mysql有很多文本列或整数列和一个新表吗?

时间:2010-12-21 17:59:53

标签: php mysql

我是mysql的新手,可以选择我的新数据库的mysql数据库结构。我可以:

table1 :( ID,text1,text2,text3,text4,最多为text7)

OR

table1:(ID,int1,int2,int3,...直到int7)其中int值链接到表2唯一索引

表2:(ID2,文本)

所以基本上,我应该将所有文本放在单个表中的列中,还是将saparate和索引值存储在1个表中,将文本数据存储在第二个表中... 查询将被赋予ID代码,将字符串文本1返回到文本7.表格将很大,大约约1百万个ID(意思是表2,如果使用方法2将有~7百万个条目)

您认为哪种方法会更快?

EDIT1:每个文本的长度为250个字母。 EDIT2:为了澄清,我得到了ID,并且对表的查询将获得该ID的所有7个文本项。这是将在表上执行的唯一查询以及所需的唯一信息。只需要知道使用哪个会更快。如果两者都没有,请提供更好的方式!

2 个答案:

答案 0 :(得分:1)

请提供更多信息,并告诉我们您要存储的内容。

然而,在关系数据库中的单个记录中存储多个相同的“东西”通常是错误的方法。你提出的解决方案都涉及将7个东西存储在一个记录中,因此它们最初看起来都不是一个好的解决方案。

“正确”的解决方案(没有任何特殊条件)将有一个表(在您的示例中)有700万个条目。

您是否在考虑第二种解决方案,因为有人建议您通过将文本值存储在具有整数ID的单独行中来“标准化”文本值?如果是这样,我认为你并不完全明白他们的意思。指定的解决方案不规范化数据库,它只是添加一个(不必要的)间接级别。

如果绝对必须使用非规范化解决方案,则一条记录中的所有字符串都要比整数ID的复杂性更好。

答案 1 :(得分:0)

如果您没有根据文字查询,则不会产生任何速度差异。保持简单,只需使用1个表。如果您必须按文本查询,那么您将要更改它。