哪个从mysql数据库中检索数据会更快?

时间:2010-11-11 18:31:50

标签: sql database database-design mysql

哪个从mysql数据库中检索数据会更快?数据分为两列,还是来自单列的相同大小的数据?

编辑:

只是提出一个想法,我有一个问题表和五个答案。这些答案相当大,每个1500字。在数据检索速度方面,我应该为每个答案使用一列,还是应该只用分隔符分隔5个答案的一列,然后用脚本分隔它们?

6 个答案:

答案 0 :(得分:4)

不要将答案组合成单个列,不管是否分隔。如果你这样做,你不仅要打破rule-of-thumb in db design第一次正常形式),你还要为自己设定一个受伤的编程世界。

您还应该考虑在这里参与过早优化。也不要那样做。根据我的经验,我认为其他人会同意,您应该信任您的RDBMS 来有效地存储和检索数据。您唯一需要做的就是正确设置索引。如果这确实会导致性能问题,那么您可以在此时进行非规范化。

答案 1 :(得分:4)

为了响应您的编辑,您提供的选项都不是此问题的“正确”设计。您应该在答案表中创建5个,每个行都包含问题的ID和一列中的单个答案。

只有在遇到性能问题时才考虑其他设计。除非您收集数百万个问题,否则不太可能出现问题。

答案 2 :(得分:2)

如果他们在同一张桌子上,那就没有什么区别。

访问行后,从列中查找数据需要花费大量时间。

您应该根据您的数据以及访问方式做出决定。

答案 3 :(得分:2)

不要依赖猜测和假设。使用您的硬件,编码和数据自行进行基准测试。

答案 4 :(得分:2)

我想说,您访问和使用这些信息的方式比实际存储的方式更为重要。

我可能会说,如果您要独立引用每个答案,例如多项选择答案,请将答案存储在具有以下结构的3列表中:

CREATE TABLE answers (
  question_id INTEGER PRIMARY KEY,
  answer INTEGER,
  answer_text TEXT
);

对于给定问题中的每个答案,答案将类似于1,2,3,4 ......,更适合和理智。

答案 5 :(得分:0)

某些数据库不会索引文本类型列。因此,如果您将文本列中的列拆分为varchar,,则每列都已编入索引,您正在使用不对文本列编制索引的数据库,你会有更好的表现来打破它们。