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
更多>>什么是webpack?
一、webpack的概念 webpack 是代码编译工具,有入口、出口、loader 和插件。webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。...详情>>
2023-10-20 22:17:55公司管理者的角色定位是什么?
1、业务指挥者管理者处于工作最前线,企业的工作任务,都要分解落实到各个部门甚至班组。通过管理者的正确指挥,才能得以实现。管理者的指挥作...详情>>
2023-10-20 20:14:29trello干什么的?
一、创建任务列表Trello的核心功能是帮助用户创建任务列表。您可以创建一个新的“看板”,然后将任务分配到各个列表中。例如,在一个应用程序开...详情>>
2023-10-20 19:40:39MySQL分表后怎么查询效率高?
一、MySQL分表后提高查询效率的方法1、查询路由根据分表规则将查询路由到特定的分表,只查询所需的分表,避免全表扫描。这可以通过应用程序或数...详情>>
2023-10-20 18:35:22热门推荐
node是什么?
沸程序员都上什么网站?
热#!/usr/bin/env python有什么用?
热什么是webpack?
新什么是模块化编程什么是module?
Python内置函数有哪些?
HTML、CSS、JavaScript分别实现什么功能?
公司管理者的角色定位是什么?
trello干什么的?
ddl文件用什么软件打开?
MySQL分表后怎么查询效率高?
mysql 不加条件查询速度挺快,加上过滤条件就特别慢是为什么?
Mybatis中,resultMap collection的应用场景是什么样子的?
endnote9的online search没有数据库选项是怎么回事?