建议使用带有多个JOIN的单个SELECT语句来检索多个一对多关系吗?似乎随着关系数量的增加,连接的结果将变得难以管理。
例如,假设我们有以下关系:
假设我们想要检索id = 1的学校及其老师,学生和部门。这是使用单个SELECT语句的查询:
SELECT s.name AS school,
t.name AS teacher,
st.name AS student,
d.name AS department
FROM schools s
LEFT OUTER JOIN teachers t
ON s.id = t.SchoolId
LEFT OUTER JOIN students st
ON s.id = st.SchoolId
LEFT OUTER JOIN departments d
ON s.id = d.SchoolId
WHERE s.id = 1;
假设这所学校有100名教师,1000名学生和10个部门。然后这个查询将返回一百万条记录(100 x 1000 x 10)!相反,如果我们做了3个单独的SELECT,我们将在100 + 1000 + 10 = 1110个记录中获得相同的信息。我只能想象单个SELECT非常慢。那么做一个SELECT有什么优势吗?这是一种已知的反模式吗?
答案 0 :(得分:0)
您的“解决方案”没有获得相同的信息。它检索教师,部门和学生的单独列表,但不是哪个学生在哪个教师班级,而是与教师和部门类似。