代码之家  ›  专栏  ›  技术社区  ›  Babiker

在从mysql数据库检索数据时哪个更快?

  •  3
  • Babiker  · 技术社区  · 14 年前

    在从mysql数据库检索数据时哪个更快?数据分为两列,还是同一列的相同大小的数据?

    编辑:

    我有一张桌子,上面有一个问题和五个答案。这些答案相当大,每个大约1500字。当谈到数据检索速度时,我应该为每个答案使用一个列,还是应该用一个分隔符分隔5个答案的列,然后使用脚本来分隔它们?

    6 回复  |  直到 14 年前
        1
  •  4
  •   Paul Sasik    14 年前

    不要将答案组合成一列,不管是否分隔。如果你这样做,你不仅仅是打破了 rule-of-thumb in db design ( 第一范式 )你也在为你自己建立一个受伤的编程世界。

    你也应该考虑到你参与了 过早优化 在这里。也不要那样做。以我的经验,我认为其他人也会同意,你应该 相信你的关系数据库 为您高效地存储和检索数据。唯一需要做的是正确设置索引。如果这真的变成了一个性能问题,您可以在这一点上取消规格化。

        2
  •  4
  •   Larry Lustig    14 年前

    针对您的编辑,您提供的两个选项都不是此问题的“正确”设计。你应该赚5英镑 在一个答案表中,每一个都有问题的ID,在一列中只有一个答案。

    只有当结果出现性能问题时,您才应该考虑其他设计。除非你收集了上百万的问题,否则不太可能有问题。

        3
  •  2
  •   Alan Geleynse buhbang    14 年前

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

    一旦访问了一行,从列中查找数据只需花费很少的时间。

    你应该根据你的数据和你将如何访问它来做决定。

        4
  •  2
  •   Alex Howansky    14 年前

    不要依赖猜测和假设。你自己,在你的硬件上,用你的代码,和你的数据做基准测试。

        5
  •  2
  •   unode    14 年前

    我想说的是,你访问和使用信息的方式比它实际存储的方式更相关。

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

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

    答案大概是1,2,3,4,。。对于一个给定问题的每一个答案,都会更加合适和理智。

        6
  •  0
  •   Parris Varney    14 年前

    有些数据库不索引文本类型列。因此,如果将列从文本列拆分为varchar, 每一列都有索引, 您使用的数据库不索引文本列,分解它们会获得更好的性能。