MySQL | 您所在的位置:网站首页 › join的搭配 › MySQL |
SELECT DISTINCT a.domain , b.domain
FROM mal_nxdomains_raw a
LEFT JOIN mal_nxdomains_detail b ON a.domain = b.domain #and b.date = '20160403'
WHERE a.date = '20160403'
AND b.date = '20160403'
四、on 条件与where 条件 使用位置 on 条件位置在join后面 where 条件在join 与on完成的后面 使用对象on 的使用对象是被关联表 where的使用对象可以是主表,也可以是关联表 选择与使用主表条件筛选:只能在where后面使用。 被关联表,如果是想缩小join范围,可以放置到on后面。如果是关联后再查询,可以放置到where 后面。 如果left join 中,where条件有对被关联表的 关联字段的 非空查询,与使用inner join的效果后,在进行where 筛选的效果是一样的。不能起到left join的作用。 五、join 流程 tableA join tableB, 从A表中拿出一条数据,到B表中进行扫描匹配。 所以A的行数决定查询次数,B表的行数决定扫描范围。例如A表100条,B表200表,需要100次从A表中取出一条数据到B表中进行200次的比对。 相对来说从A表取数据消耗的资源比较多。所以尽量tableA选择比较小的表。同时缩小B表的查询范围。
但是实际应用中,因为二者返回的数据结果不同,使用的索引也不同,导致条件放置在on 和 where 效率是不一定谁更好。要根据需求来确定。 |
CopyRight 2018-2019 实验室设备网 版权所有 |