有个SQL的问题咨询下:关于PostgreSQL 或者 MySQL的left join 实现假设:表结构table_name :useruid name1 张三2 李四3 王五
table_name : age
uid age1 102 203 304 40SQL如下:
示例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条相关的就几十万条),
是查询百万条数据匹配,还是查询几十万条匹配
添加回答
举报
0/150
提交
取消