如下所示:
有两个表
t_game_sporter(参赛运动员表)和t_sporter(运动员表)其中 t_game_sporter 上有一个t_sporter的外键列为sporter_id。现在我要查询以下信息,即查询出所有已参赛的参赛运动员id以及相对应的运动员姓名。如下是相对应的sql
sql1:
select t.name,b.id from t_sporter t,t_game_sporter b where b.sporter_id = t.id
sql2:
select id,(select t.name from t_sporter t where t.id = sporter_id) from t_game_sporter
我们首先假设 参赛运动员表中不存在sporter_id为null的情况,在这种情况下。sql1和sql2查询出来的结果均是一样的。
现在要分析的是这两条sql的运行效率。首先t_sporter表的数量肯定比t_game_sporter表数量大。
sql1的解释计划如下所示:
sql2的解释计划如下所示:
请高手来回答一下为什么两个的差距这么大,在数据库层面是如何进行工作的?
如果 t_game_sporter(参赛运动员表)有sporter_id为null的情况,又怎么来写sql1呢?