【发布时间】:2020-08-30 11:34:57
【问题描述】:
我的数据库中的三个表如下:
- 教师桌
teachers: teacher_id, teacher_name - 学生桌
students: student_id, student_name - 教师-学生有一个多对多的关系,因此他们有一个专用表as per this answer:
students_volunteers: teacher_id (FK), student_id(FK)
现在假设一位老师不能上课,所以他/她发布了一个替代请求,所以我们只想向那些有相同学生的老师发送通知。所以我写了相同的 SQL 查询:
SELECT DISTINCT students_volunteers.v_id_sv
FROM students_volunteers
WHERE students_volunteers.s_id_sv IN (SELECT students_volunteers.s_id_sv
FROM students_volunteers
WHERE v_id_sv = 3)
AND students_volunteers.v_id_sv <> 3
它工作正常,只是它有一个子查询,由于性能问题并不理想。
所以我想知道我们是否可以使用一些JOIN 或其他东西来提高性能.....
【问题讨论】:
-
不应该有性能问题。您可以尝试任何其他方法,但此查询将提供同等甚至更好的性能。
-
一些针对 many:many 表的一般性能提示:mysql.rjweb.org/doc.php/…
标签: mysql sql subquery query-optimization where-clause