Mysql 更好的数据库设计性能

Mysql 更好的数据库设计性能,mysql,database-design,Mysql,Database Design,我正在开发一个有评分系统的网络应用程序。为此,我有一个固定的10种不同类型的考试 考试1,考试2。。。考试10 这是每个学生的工资。这种情况下,学生将参加一次随机考试,可能是第一次考10分,第二次考3分 我想将分数存储到数据库中,数据库的关键是学生id,因此我对设计的想法是: 学生id、考试类型、考试分数 学生id,考试1,考试2。。。考试10 或者你有更好的选择,请分享给我 我想知道对于你们这些比我这样的新手更有经验的人来说,哪种方法的性能更好。 更新: 我将运行的示例查询 哪个学生在这次考试

我正在开发一个有评分系统的网络应用程序。为此,我有一个固定的10种不同类型的考试

考试1,考试2。。。考试10

这是每个学生的工资。这种情况下,学生将参加一次随机考试,可能是第一次考10分,第二次考3分

我想将分数存储到数据库中,数据库的关键是学生id,因此我对设计的想法是:

  • 学生id、考试类型、考试分数
  • 学生id,考试1,考试2。。。考试10
  • 或者你有更好的选择,请分享给我
  • 我想知道对于你们这些比我这样的新手更有经验的人来说,哪种方法的性能更好。

    更新: 我将运行的示例查询

  • 哪个学生在这次考试中得了分数
  • 学生在所有考试中的总分是多少(我将获得一个学生的所有考试分数,然后计算核心的平均分)
  • 显示每个学生相对于其考试类型的所有分数

  • 在这里,您真的需要关注性能来评估设计吗?MySQL的单个实例可能每秒可以在具有正确索引的商品硬件上运行超过10k个select查询,无论您选择哪种设计。我认为你应该考虑其他非功能属性,比如可维护性、可扩展性、表达性。
    所以,我会选择1号。学生id、考试类型、考试分数。这使得以后添加其他类型的考试更容易。此外,如果您想进行聚合(最小、最大、平均),select查询将更容易

    如果您的学生人数不多,就性能而言,使用选项1对于这些简单的聚合已经足够了


    大量的学生,你可能需要考虑数据仓库选项来在立方体中聚合你的数据。

    唯一正确的方法是<代码> 1 < /代码>。现在,如果我们只考虑性能,那么最佳方法将取决于您将要执行的查询run@MostyMostacho我更新了一些我将要使用的查询。不要担心“性能”。首先修复/设计数据库模型,使其规范化。或者甚至进行examSequence,使人不会被锁定在最初提到的10个数据库中。好吧,我假设数据集足够小,可以放入内存中。我还没有在MySQL上运行过任何测试,但我在我的macbook上看到了在postgresql上发生的超过10k的测试。