有人可以帮我优化这个查询吗?

问题描述 投票:-2回答:1

我有三张桌子A, B, C。我必须从A采取SName,其中rollNumber = 11Bname来自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';
sql oracle
1个回答
-2
投票
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子句中涉及的所有列。

© www.soinside.com 2019 - 2024. All rights reserved.