我有三张桌子A, B, C
。我必须从A
采取SName,其中rollNumber = 11
和Bname
来自B
,然后BCode = 10
然后select C.SName,C.Bname, C.ID from C where SName = "one obtained from A table" and BName = "one obtained from B table"
我写了这个查询:
select C.SName, C.Bname, ID
from A,B,C
where B.Bname = C.Bname and A.SName = C.SName and
A.rollNumber='11' and B.Bcode='10';
SELECT C.SName, C.BName, C.ID
FROM C
INNER JOIN (SELECT * FROM A WHERE rollNumber='11') as t1
ON t1.SName = C.SName
INNER JOIN (SELECT * FROM B WHERE Bcode='10') as t2
ON t2.BName = C.Bname;
您可以执行的一项优化是在执行连接之前先过滤到较小的临时表。这将导致JOIN中的行数少得多。另一个优化是索引JOIN ... ON子句和WHERE子句中涉及的所有列。