SQL语句 in和inner join各有什么优点

比如A1表 100W行   A2表50W行select a.* from A1 a where a.column1 in (select b.column1 from A2 b where b.column2=‘xxx‘);select a.* from A1 a where exists (select ‘x‘ from A2 b where b.column2=xxx and a.column1=b.column1);select a.* from A1 a,A2 b where b.column2=‘xxx‘ and a.column1=b.column1

在(select b.column from A2 b where b.column2=xxx)的结果集比较小的情况下(比如只有几十条)用in的效率高于关联,如果结果集比较大的情况下则用join的效率高于用in,这里我还列举了exists,这个效率类似于join也是结果集大的情况下适用,至于两者的拐点还需要你在执行计划和统计信息当中去观察以便确定出最优的sql语句。
时间: 2024-08-01 14:55:29

SQL语句 in和inner join各有什么优点的相关文章

sql语句之union与join的区别

union查询: 使用 union 可以将多个select语句的查询结果组合起来. 语法: select 字段1,字段2 from table1 union select 字段1,字段2 from table2; 例: 注意: 1.union 关键字两边的select语句的字段数量是需要一致的,并不要求字段名称一致. 例:error 1222 字段不一致 2.查询的最终结果集的字段是以第一个select语句的字段来命名. 例: 3.union自动屏蔽重复的数据 例: 但是可以添加 all 来取消

sql语句中的 inner join 、 left join 、 right join、 full join 的区别

简单明了地说,连接分内连接和外链接 假设有A和B两张表 内连接:inner join   表示把AB表的记录相符都显示出来,把AB表不符合条件的都排除 外连接分三种,即左连接(LEFT OUTER JOIN).右连接(RIGHT OUTER JOIN).全连接(FULL OUTER JOIN),下面就简单解析一下,.1.A LEFT OUTER JOIN B表示把A表的记录都显示出来,把B表符合条件的结果集显示出来,不符合条件的用NULL表示.2.A RIGHT OUTER JOIN B表示把B

基于简单sql语句的sql解析原理及在大数据中的应用

李万鸿 通常sql语法解析都是以lex.yacc进行分析为基础的,是逐个字符进行分析,性能不高,如果基于没有子查询的sql语句进行解析,则速度会提高许多,在此对其原理加以说明. 一般sql语句十分复杂,包含多层嵌套,但其中有规律可循,其特点是所有的语句基本模式是一样的,即:都是SELECT  FROM  WHERE类型的简单语句,因此,可以把嵌套的语句逐条解析为这种简单语句.由于sql语句的语法是一样的,所以可以用递归的方法对语句加以解析,从而把sql语句解析为多条简单的子SQL语句.然后通过一

NNER JOIN连接两个表、三个表、五个表的SQL语句

NNER JOIN连接两个表.三个表.五个表的SQL语句 2013-04-14 15:13:11来源:西部e网作者: SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. 1.连接两个数据表的用法: FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSor

浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

今天的工作学习之路是一个数据库的小知识,当时没有区分出所以然,特此记录分享一下子. 众所周知,数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过LEFT JOIN 等语句进行相关联,并且我们也会为我们所想查询的数据进行一个筛选,这时我们就会用到过滤语句. LEFT JOIN ON WHERE:在临时表生成后,再对临时表的数据进行过滤,再返回左表.

带Left Join的SQL语句的执行顺序

基础的SQL执行顺序 SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需要的信息形成新的结果集. 3.group by 对新的结果集分组. 4.having 筛选出想要的分组. 5.select 选择列. 6.order by 当所有的条件都弄完了.最后排序. 带连接的SQL语句执行顺序(以Left Join为列) 我的理解是这样,SQL语句中无论

sql语句中left join、right join、inner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录: right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录:inner join(等值连接) 只返回两个表中联结字段相等的行. 我们建立两个简单的表A和B,如图所示: A:     B: 1)left join 我们执行sql语句:select * from A left join B  on A.id = B.id; 结果如下: 说明:left join是以A表的记录为基础的,A可以看成

2014-08-13 SQL语句之Left Join

今天是在吾索实习的第26天.这天在处理数据库数据的时候发现了一个不错的语句就是Left Join,即左连接.  其功能是:即使右表中没有匹配,也从左表返回所有的行.也就是说,显示的行数与左表一致,且当右表没有相应数据时,会用NULL或0补上.如下: 如此类推,右连接Right Join亦然. 2014-08-13 SQL语句之Left Join,布布扣,bubuko.com

LINQ to SQL语句(4)之Join

1.一对多关系(1 to Many): var q = from c in db.Customers from o in c.Orders where c.City == "London" select o; 语句描述:Customers与Orders是一对多关系.即Orders在Customers类中以 EntitySet形式出现.所以第二个from是从c.Orders而不是db.Orders里进行筛选 .这个例子在From子句中使用外键导航选择伦敦客户的所有订单. var q =