【发布时间】:2016-12-27 02:32:27
【问题描述】:
我想看看我对JOINs的理解是否正确。
对于以下查询:
SELECT * FROM tableA
join tableB on tableA.someId = tableB.someId
join tableC on tableA.someId = tableC.someId;
RDMS基本上执行类似的伪代码如下:
List tempResults
for each A_record in tableA
for each B_record in tableB
if (A_record.someId = B_record.someId)
tempResults.add(A_record)
List results
for each Temp_Record in tempResults
for each C_record in tableC
if (Temp_record.someId = C_record.someId)
results.add(C_record)
return results;
所以基本上someId tableA 与tableB 和tableC 相同的记录越多,RDMS 扫描的记录就越多?如果所有 3 个表都有相同的 someId 记录,那么本质上是对所有 3 个表进行全表扫描?
我的理解正确吗?
【问题讨论】: