因為每個人所修科目不同,所以拆成兩個資料表 A & B 並進行關連。

所要達到的查詢結果是,要找出有修過那些科目且成績達到多少以上的學生名字。
如,物理 成績>=15 且 會計成績>=30 的學生。
我想到的方法是這樣
SELECT *
FROM A
WHERE EXISTS (SELECT ID FROM B WHERE A.學號=B.FK_學號 AND B.科目='物理' AND 成績>=15)
AND EXISTS (SELECT ID FROM B WHERE A.學號=B.FK_學號 AND B.科目='會計' AND 成績>=30)
這樣看起來似乎會很沒效率。因為實際的資料表 A 約有10萬筆,資料表B 約50萬筆。
想請教各位專家是否有最佳化的寫法?
謝謝大家。




























































































