gpt4 book ai didi

mysql - 数据库速度取决于列或行(记录)?

转载 作者:行者123 更新时间:2023-11-29 00:39:00 26 4
gpt4 key购买 nike

我有一个学生实体,现在我想创建一个学生表和一个学生属性表,如 dob, age, salary .学生属性约为120。

那么将来表性能和我的 MySQL 操作哪个会更好

选项

  1. 创建一个表 (student_mst),将所有学生属性作为具有良好数据类型的列

  2. 或者,创建两个有关系的表(student_mst, student_attributes)并在table - student_attributes.中添加学生属性的多条记录

最佳答案

这是两种完全不同的方法,因此这完全取决于您希望如何处理数据。只有当您选择的模型不能很好地满足您访问数据的方式时,性能才会成为问题。

如果所有学生都使用所有或大部分属性,并且有一组固定的属性,则第一个选项是自然方法。

如果学生具有不同的属性集,并且您可能会扩展属性集,则第二个选项会很有用。

使用第一种方法时,您通常会编写不同的查询来处理不同的属性。例如,很容易获得学生列表并返回一些属性。示例:

 select StudentId, Name, Age, Class, Grade
from Students
order by Age desc

使用第二种方法,您通常会分别获取基本学生信息和学生属性。要获得具有某些属性的学生列表会更复杂,并且它会累积您想要获得的更多属性。示例:

 select s.StudentId, Name = a1.Value, Age = a2.Value, Class = a3.Value, Grade = a4.Value
from Students s
inner join Attributes a1 on a1.StudentId = s.StudentId
inner join Attributes a2 on a2.StudentId = s.StudentId
inner join Attributes a2 on a3.StudentId = s.StudentId
inner join Attributes a3 on a4.StudentId = s.StudentId
order by cast(a.Value as int) desc

关于mysql - 数据库速度取决于列或行(记录)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13108008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com