`
498320858
  • 浏览: 392323 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sql 中 in 和exist的效率比较

    博客分类:
  • sql
 
阅读更多
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。

如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');与
select name from student where name='zhang' or name='li' or
name='wang' or name='zhao'
的结果是相同的。
分享到:
评论

相关推荐

    经典SQL查询总结关于Exists,not Exists.in ,not in效率的说明。

    本文将深入探讨 SQL 中 `EXISTS`, `NOT EXISTS`, `IN`, `NOT IN` 的使用场景及效率问题。 #### 一、Exists 和 Not Exists 的效率说明 **Exists** 和 **Not Exists** 子句通常用于检查子查询是否返回任何行,它们...

    SQL中对not in和not exist查询的替代算法.pdf

    在SQL语言中,not in和not exist查询是两个非常重要的查询操作,但是它们的效率非常低,会消耗大量的时间和系统资源。因此,需要找到一种替代算法来解决这个问题。 在本文中,作者提出了一个使用临时表来实现not in...

    IN 和 EXIST的区别

    标题和描述均聚焦于SQL语言中“IN”和“EXISTS”的区别,这是数据库查询语言中两种常用的子查询处理方式,它们在功能上虽然相似,但在执行效率、索引使用以及适用场景上存在显著差异。 ### IN关键字 “IN”主要...

    in exist not_in

    IN、EXISTS、NOT EXISTS、NOT IN 在 SQL 语句中的应用和区别 IN 语句和 EXISTS 语句都是 SQL 语句中用来判断是否存在某个值的语句,但是它们的实现机制和应用场景是不同的。 IN 语句是通过 hash 连接来实现的,它...

    “exists”和“in”的效率问题

    在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,帮助读者更好地理解和选择合适的查询方式。 ###...

    MySQL数据库优化SQL篇PPT课件.pptx

    IN和EXIST语句的使用可以提高数据库的性能和效率。 四、LIMIT语句 LIMIT语句是MySQL数据库中用于限制查询结果的语句。LIMIT语句可以帮助我们限制查询结果的数量,从而提高数据库的性能和效率。 五、RAND函数 ...

    WINCC读写SQL数据库的例子

    在工业自动化领域,SIMATIC WinCC是西门子推出的一款人机界面(HMI)软件,用于监控和数据采集。本文将深入探讨如何利用WinCC与SQL...这将帮助你在实际工程中实现数据的实时获取和更新,提高系统的自动化水平和效率。

    sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

    SQL语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的...通过使用EXISTS和NOT EXISTS,我们可以提高查询的效率,避免了使用NOT IN和IN的低效率。同时,EXISTS和NOT EXISTS也可以使查询语句变得更加简洁和易于理解。

    exists SQL用法详解、exists和not exists的常用示例

    `EXISTS`和`IN`的区别在于,`IN`通常用于比较单个字段值,而`EXISTS`可以处理更复杂的查询,它关心的是子查询是否返回行,而不关心返回的具体值。`IN`通常用于获取特定值列表内的记录,而`EXISTS`则可以用于检查记录...

    SQL SERVER中关于exists 和 in的简单分析

    在SQL Server中,`EXISTS` 和 `IN` 是两种常用的子查询操作符,用于比较一个查询结果是否与另一个查询结果相匹配。虽然它们在功能上相似,但在性能和优化方面存在一些差异,这在大数据处理时尤其显著。 1. **EXISTS...

    SQL编程规范(还不错哦)

    SQL 编程规范是一组编程规则和best practice,旨在提高 SQL 编程的效率、可读性和可维护性。本规范涵盖了 SQL 书写规范、书写优化性能建议和其他经验性规则,旨在帮助开发者编写高效、可靠的 SQL 代码。 SQL 书写...

    SQL优化之针对count、表的连接顺序、条件顺序、in及exist的优化

    本文将深入探讨四个关键的SQL优化策略:count、表的连接顺序、条件顺序以及in和exist的使用。 首先,让我们关注`count()`函数的优化。通常认为`count(*)`统计所有行,而`count(列名)`只计算指定列的非空值。许多人...

    SQL语言特点及在PB编程中的使用.pdf

    这些SQL语句可以使用所有与DBMS有关的子句和保留字,如在SELECT命令中使用LIKE、BETWEEN、IN、EXIST、ANY、ALL、IS NULL等搜索条件,在INSERT、UPDATE、DELETE命令中使用子查询,在表达式中使用DBMS特定的内部函数等...

    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录

    MySQL中的`NOT IN`, `LEFT JOIN`, `IS NULL`, 和 `NOT EXISTS` 是四种不同的SQL查询方式,它们在特定情况下可以实现相似的功能,但实际执行效率可能会有很大差异。本文主要探讨这四种方法在处理大数据量时的性能表现...

    sql 书写规范

    "sql 书写规范" SQL 书写规范是为了确保 SQL 代码的可读性、可维护性和性能,以下是 SQL 书写规范的详细说明: ...遵守这些规范可以确保 SQL 代码的可读性、可维护性和性能,从而提高数据库的效率和稳定性。

    金仓Kingbase日常运维SQL汇总.pdf

    通过这些命令,DBA可以快速地获取到关键的数据库信息,从而更好地管理数据库,提高系统的稳定性和效率。此外,这些命令也为数据库的安全审计和性能优化提供了基础数据支持。希望本文档能对从事金仓Kingbase数据库...

    SQL复习-EXISTS谓词

    三、EXISTS与IN和JOIN的比较 1. EXISTS vs IN: - EXISTS更关注于是否存在匹配的行,而IN则关心具体匹配的值。在处理大量数据时,如果子查询返回的值较少,IN可能更快;反之,如果子查询返回很多行,EXISTS通常...

    sql性能优化

    SQL性能优化是数据库管理中的关键任务,它直接影响到应用程序的响应时间和整体效率。本文主要讨论了几种常见的SQL性能优化策略。 首先,对于查询的模糊匹配,应尽量避免使用LIKE '%parm1%'这样的语法,因为百分号在...

Global site tag (gtag.js) - Google Analytics