我对 SQL 查询调优相当陌生。我一直在尝试了解如何编写等效的查询。在浏览J. Widom 教授的斯坦福在线视频讲座时,她提到了一些子查询,如果不JOIN
使用DISTINCT
. 例如,看这个:
4:45 / 20:13 - GPA 示例
SELECT GPA
FROM Student
WHERE sID in (select sID from Apply where major = 'CS');
Run Code Online (Sandbox Code Playgroud)6:39 / 20:13 - 学生申请 CS 而不是 EE
SELECT sID, sName
FROM Student
WHERE sID IN (select sID from Apply where major = 'CS')
AND sID NOT IN (select sID from Apply where major = 'EE');
Run Code Online (Sandbox Code Playgroud)我的问题是如何知道使用子查询编写的 SQL 语句是否将具有使用连接编写的等效语句。我很舒服,如果在答案中,有人喜欢使用关系代数表示法。
我在网上搜索了很多,找不到合适的答案。
Schema 和表创建(对于 PostgreSQL)如下,
CREATE TEMP TABLE college …
Run Code Online (Sandbox Code Playgroud)