数据库多表查询之 where & INNER JOIN
2017-10-15 11:46
435 查看
在多表查询中,一些SQL开发人员更喜欢使用WHERE来做join,比如:
[/code]
缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生1000000个结果,然后通过正确的 ID过滤出1000条记录。 这是一种低效利用数据库资源,数据库多做100倍的工作。 在大型数据库中,笛卡尔连接是一个大问题,对两个大表的笛卡尔积会创建数10亿或万亿的记录。
为了避免创建笛卡尔积,应该使用INNER JOIN :
[/code]
优点:如上面语句,使用inner join 这样数据库就只产生等于ID 的1000条目标结果。增加了查询效率。
有些数据库系统会识别出 WHERE连接并自动转换为 INNER JOIN。在这些数据库系统中,WHERE 连接与INNER JOIN 就没有性能差异。但是, INNER JOIN 是所
a28c
有数据库都能识别的,因此DBA会建议在你的环境中使用它。
2
3
[/code]
注意:
1、INNER JOIN 等同于 JOIN;
2、示意图:
SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID;1
[/code]
缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生1000000个结果,然后通过正确的 ID过滤出1000条记录。 这是一种低效利用数据库资源,数据库多做100倍的工作。 在大型数据库中,笛卡尔连接是一个大问题,对两个大表的笛卡尔积会创建数10亿或万亿的记录。
为了避免创建笛卡尔积,应该使用INNER JOIN :
SELECT a.ID, b.Name, b.Date FROM Customers a INNER JOIN Sales b ON a.ID = b.ID;1
[/code]
优点:如上面语句,使用inner join 这样数据库就只产生等于ID 的1000条目标结果。增加了查询效率。
有些数据库系统会识别出 WHERE连接并自动转换为 INNER JOIN。在这些数据库系统中,WHERE 连接与INNER JOIN 就没有性能差异。但是, INNER JOIN 是所
a28c
有数据库都能识别的,因此DBA会建议在你的环境中使用它。
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。 LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。1
2
3
[/code]
注意:
1、INNER JOIN 等同于 JOIN;
2、示意图:
相关文章推荐
- 数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别
- mysql连表查询之left join on / right join on / inner&nb
- 跨数据库查询:MySQL inner join PostgreSQL inner join ...
- 数据库多表查询之 where & INNER JOIN
- thinkphp5 & 数据库多表联查 & where多条件查询
- 数据库的外联和内联知识 Inner Join & Outter Join
- 数据库的外联和内联知识 Inner Join & Outter Join
- 数据库的外联和内联知识 Inner Join & Outter Join
- 数据库多表查询之 where & INNER JOIN
- TP3.2 join查询加where条件
- 数据库调优教程(一)前言&慢查询定义
- 11-6数据库加强(子查询(独立子查询,相关子查询),分页显示,开窗函数 over(),join )
- left join & right join $inner join ......
- TP框架where条件查询数据库
- inner join&left join&right join的区别?
- Linq to SQL 语法查询(子查询 & in操作 & join )
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- 使用INNER JOIN ON 多表关联查询,获取指定用户下指定权限的资源SQL:
- inner join MySQL Profiles 三表内联查询效率优化
- SQL SERVER inner join on 和where条件的作用范围