inner join跟where查询的区别

就查询结果是没有什么区别的。但是在网上看到一篇是讲到效率问题,暂时不是很理解

结果一样,查询效率明显的区别,一个两个集合放在一起,一个是匹配字段查询。
比如统计表:
姓名 | 工作
===================
张三 | 写报告
------------------------------
李四 | 焊接

人员名单:
姓名 | 工号
===================
张三 | A520024
-----------------------------
王五 | A002532

直接把俩集合放一起查询会变成
统计表.姓名 | 工作 | 工号 | 人员名单.姓名
=============================================
张三 | 写报告 | A520024 | 张三
---------------------------------------------------------------
李四 | 焊接 | A520024 | 张三
---------------------------------------------------------------
张三 | 写报告 | 王五 | A002532
---------------------------------------------------------------
李四 | 焊接 | 王五 | A002532

2*2变成4种记录,他要经过这个计算,再给他个条件
统计表.姓名 | 工作 | 工号 | 人员名单.姓名
=============================================
张三 | 写报告 | A520024 | 张三
能是一样吗,这样查询效率会慢上记录数*记录数倍?
连接姓名查询后会变成:
统计表.姓名 | 工作 | 工号 | 人员名单.姓名
=============================================
张三 | 写报告 | A520024 | 张三

1*1匹配。直接去找名称了
这就是为什么SQL关键字要在语言中起作用,如果没有关键字也能做到某些查询结果,但是未必真的能达到Server服务器带来的效率

时间: 2024-09-29 02:04:54

inner join跟where查询的区别的相关文章

SQL关联查询 直接join 和子查询的区别

SQL语句执行的时候是有一定顺序的. 1.from先选择一个表,构成一个结果集. 2.where对结果集进行筛选,筛选出需要的信息形成新的结果集. 3.group by对新的结果集分组. 4.having筛选出想要的分组. 5.select选择列. 6.order by当所有的条件都弄完了.最后排序. explain select users.`mobile_num`, concat(users.`lastName` ,users.`firstName`) as userName, users.

SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别

前言: 今天主要的内容是要讲解SQL中关于Join.Inner Join.Left Join.Right Join.Full Join.On. Where区别和用法,不用我说其实前面的这些基本SQL语法各位攻城狮基本上都用过.但是往往我们可能用的比较多的也就是左右连接和内连接了,而且对于许多初学者而言不知道什么时候该用哪种语法进行查询,并且对于左右,或者内连接查询的时候关于ON 和Where 的作用也是模糊不清的,说不出其中的一个大概的差别,因此接下来请容我把它们好好描述一遍. 数据库(MS S

DNS递归查询和迭代查询的区别

转载地址:http://blog.csdn.net/wuchuanpingstone/article/details/6720723 递归查询和迭代查询的区别 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机.如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机. (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能

数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别

join on 与 where 条件的执行先后顺序: join on 条件先执行,where条件后执行:join on的条件在连接表时过滤,而where则是在生成中间表后对临时表过滤 left join.right join.full join.inner join区别: left join:以左表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对左表无效 right join:以右表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对右表无效 full join:以左表为基准

Mysql 查询技巧:使用JOIN优化子查询

1.数据准备 mysql> select * from student; +----+--------+----------+---------+-------------+ | id | name   | idCardNo | isCadre | nickname    | +----+--------+----------+---------+-------------+ |  1 | Tom    | 350020   |       1 | Big T       | |  2 | Ji

你真的会SQL吗?关于SQL的join和on之间的区别

写了那么多年的SQL,居然发现自己写的是错的,实在是惭愧不已.还好没出什么问题. 于是,决定痛定思痛,纠正自己对SQL的错误认识. 我们有一个SQL: SELECT sys.Netbios_Name0 as [Computer Name],        sf.fileName FROM dbo.v_R_System as sys      INNER JOIN dbo.v_FullCollectionMembership as fcm          ON fcm.ResourceID = 

对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引。

问题: 大量的left join 怎么优化 select a.id,a.num,b.num,b.pcs,c.num, c.pcs,d.num,d.pcs,e.num,e.pcs,a.x, a.y from a left join b.id=a.id and b.time=a.time left join c.id=a.id and b.time=a.time left join d.id=a.id and b.time=a.time left join e.id=a.id and b.time=

inner join on 和 where = 的区别!

请看下面两条语句:select * from table1 inner join table2 on table1.id = table2.idselect * from table1,table2 where table1.id = table2.id 其实这两种方式的执行结果一样,具体区别如下: 1.WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接.INNER JOIN……ON子句产生的连接称为显性连接.(其他JOIN参数也是显性连接)WHERE和INNER JOIN产生的连接

sql(join中on与where区别)

left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录. inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行. full join:外连接,返回两个表中的行:left join + right join. cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数. 关键字: on 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表