mysql连表查询使用join和where的区别?
一、mysql连表查询使用join和where的区别

JOIN的连接条件可以出现在ON关键字或者WHERE子句中,但是我们要特别注意 ON条件和WHERE条件生效时机是不一样的,在大数据量情况下消耗的资源可能会存在很大的差异:
ON条件:做为过滤两个连接表的笛卡尔积形成中间表的约束条件,生成的中间表已经是过滤后的数据WHERE条件:在有ON条件的两表或多表连接中,是过滤中间表的约束条件,中间表先生成出来再做过滤此外,INNER JOIN中两种条件的结果是相同的,但是用LEFT JOIN 时(RIGHT JOIN或FULL JOIN类似),因为无论ON的条件是否满足都会返回左表的所有记录,因此下面两个语句是不等价的:
SELECT * FROM tab1 LEFT JOIN tab2 ON (tab1.size = tab2.size) WHERE tab2.name=’AAA’;
SELECT * FROM tab1 LEFT JOIN tab2 ON (tab1.size = tab2.size AND tab2.name=’AAA’);
前面我们提到只要是返回bool值表达式都可以做为JOIN的连接条件,因此有人会在ON条件上直接写上形如 column1 != 100 的过滤条件,推荐用法是ON条件只进行连接操作,WHERE则用于过滤中间表的记录。
延伸阅读:
二、什么是Memory引擎
Memory引擎是Mysql的内存引擎,在实现上,Memory存储引擎不同于Innodb这种组织索引结构(索引即是数据,即数据存放在主键索引上),而是将索引和数据分开存储。索引采用Hash的形式,存放主键id和指向数据的指针,而数据则按插入顺序存放。我们称这种数据组织方式为堆组织方式。
猜你喜欢LIKE
相关推荐HOT
更多>>
空指针引用判断和空表单有哪些区别?
一、空指针引用判断和空表单的区别1、概念不同空指针引用” 是编程语言中的概念,是指指向对象的指针为空,而 空表单” 是 Web 开发...详情>>
2023-10-11 11:23:22
光纤和宽带有哪些区别?
一、光纤和宽带的区别1、适用人群不同宽带是网络运营商所定义的上网服务的称呼,是一种通信技术。在接入网络时,宽带也可以指代普通宽带,也是...详情>>
2023-10-11 10:46:16
在线需求管理工具有哪些?
一、在线需求管理工具1. BoardMix博思在线白板BoardMix博思在线白板是一款轻量级的可视化在线协作白板工具,它基于 Web 网页端运行,支持创建任...详情>>
2023-10-11 10:23:37
WiFi和WLAN的区别是什么?
一、WiFi和WLAN的区别1、定义不同WLAN是无线局域网络,是一种数据传输系统,是利用射频技术进行数据传输,以此来实现通信和共享资源的网络体系...详情>>
2023-10-11 09:48:03
京公网安备 11010802030320号