php - 连接3张表是1张表性能MYSQL

标签 php mysql sql database performance

在学校管理系统中,我们需要合并每个学生每个科目的 3 个学期成绩。

经过讨论,我想出了两个解决方案。

解决方案一

为每个学期创建 3 个表。 (gradeSemester1, gradeSemester2, gradeSemester3)

方案二

创建 1 个名为 semesterGrades 的表,并使用一个类型处理所有 3 个学期。

解决方案 1 的原因是停止数据复制。例如,如果一个学生有 8 个科目。这在一个表中只能包含 8 条记录,而在解决方案 2 中,它最多可以包含一个学生的 24 条记录。

当性能成为主要问题时,最佳解决方案是什么?为什么解决方案 2 更好?

最佳答案

您不想根据数据更改数据库结构,因此每当您需要新学期时创建一个新表是糟糕的设计。 您只需要一张额外的表来存储成绩。但是,我个人不会将它们存储在列中,而是存储在行中以更加灵活(也许有一天您想要的不仅仅是 3 个学期的成绩)。

表格看起来像这样:

ID | StudentID | SemesterID | SubjectID | Grade

这种方法的另一个优点是您知道某个年级属于哪个学期。如果你有 3 列成绩,你只知道成绩但你不知道学期的信息(我猜如果需要的话他可能需要超过 3 个学期)。

此外,我不会担心这种方法的性能。您必须将表连接在一起,但设置正确的索引应该不是问题。

关于php - 连接3张表是1张表性能MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289254/

相关文章:

php - PHP 的 XML 字符编码问题

php - 如何使用我的 php 文件将事件 URL 附加到我的输出 (XML) 文件

mysql - 以特定方式汇总一列中的值

sql - oracle sql 获取表中所有可能的组合

php - 通过表单重定向而不给出错误

php - 格式化 MySQL 记录的显示结果

mysql - 如何与 Sequelize 建立多对多关联?

mysql - 如何将应用程序的现有 MySQL 数据库导入到 RDS AWS

php:非对象错误 - 数组输出到表 - PHP 5.3 之前的准备语句

sql - Oracle:什么是单 block 与多 block IO