我试图看看我的理解JOINs是否正确.
对于以下查询:
SELECT * FROM tableA
join tableB on tableA.someId = tableB.someId
join tableC on tableA.someId = tableC.someId;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
所以基本上更多的记录与同someId tableA有tableB和tableC,更记录了关系数据库管理系统具有扫描?如果所有3个表都有相同的记录someId,那么基本上对所有3个表进行全表扫描?
我的理解是否正确?
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |