关于left join 底层算法的困惑

有个SQL的问题咨询下:
关于PostgreSQL 或者 MySQL的left join 实现

假设:表结构

table_name :useruid    name1      张三2      李四3      王五

table_name : age
uid    age1      102      203      304      40
SQL如下:

示例1:SELECT t1.user,t2.ageFROM user t1LEFT JOIN age t2 ON t1.uid=t2.uid

示例2:SELECT t1.user
       ,(SELECT age FROM age WHERE uid=t1.uid) as ageFROM user t1

结果:示例2的查询时间优于示例1,为什么........unbelievable

怀疑点:

示例1的SQL执行顺序是否是:
    第一种:    1. 查询user全表    2. 查询age全表    3. 算法引擎将两种数据进行逐个匹配,获取结果

    第二种:    1. 查询user全表    2. 根据user查询出的数据为查询条件,查询age表    3. 算法引擎将两种数据进行逐个匹配,获取结果

是哪一种??

望解惑~

补充:

    上面表是假设的,实际表有些复杂,但是逻辑是这个样子….
    
    总结一下问题:
    
    SQL中可能基础数据(主表数据)就10条,但是关联表中的数据可能百万条(与这10条相关的就几十万条),
    是查询百万条数据匹配,还是查询几十万条匹配


12345678_0001
浏览 1172回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL