`

IN和EXISTS性能上的区别

阅读更多
在外表大内部小的情况下,EXISTS性能比IN快,如果两个表的大小相同的话,性能上几乎没有什么差别,NOT IN 不能调用索引,NOT EXISTS 可以调用索引
SET STATISTICS IO ON
SELECT * FROM Inventory WHERE IsFinish =1  
AND  UserName IN(SELECT UserName FROM Inventory)
(2756972 行受影响)
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Inventory'。扫描计数 2,逻辑读取 126904 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SELECT * FROM Inventory WHERE IsFinish=1 
AND EXISTS(SELECT UserName FROM Inventory)
(2756972 行受影响)
表 'Inventory'。扫描计数 2,逻辑读取 63455 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
分享到:
评论

相关推荐

    in和exists性能解析

    oracle in和exists性能解析

    SQL中IN和EXISTS用法的区别

    如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 SQL中IN和EXISTS用法的区别 NOT IN sql in与exists区别

    PostgreSQL IN vs EXISTS vs ANYALL vs JOIN性能分析

    PostgreSQL IN vs EXISTS vs ANYALL vs JOIN性能分析

    Oracle In和exists not in和not exists的比较分析

    in和exist的区别 从sql编程角度来说,in直观,exists不直观多一个select, in可以用于各种子查询,而exists好像只用于关联子查询 从性能上来看 exists是用loop的方式,循环的次数影响大,外表要记录数少,内表就...

    INEXISTS与NOT INNOT EXISTS 的优化原则小结

    1. EXISTS的执行流程 select * from t1 where exists ( select null ...exists的性能区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又

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

    NOT IN、JOIN、IS NULL、NOT EXISTS效率对比 语句一:select count(*) from A where A.a not in (select a from B) 语句二:select count(*) from A left join B on A.a = B.a where B.a is null 语句三:select ...

    PLSQL程序优化和性能分析方法

    2.5.5 避免在索引列上使用IS NULL和IS NOT NULL 18 2.5.6 带通配符(%)的like语句 18 2.5.7 总是使用索引的第一个列 19 2.5.8 多个平等的索引 19 2.5.9 不明确的索引等级 19 2.5.10 自动选择索引 19 2.5.11 使用...

    php数组函数array_key_exists()小结

    本文给大家汇总介绍了php数组函数array_key_exists()的相关知识以及与in_array的性能对比,与isset的区别分析,非常的详细,有需要的小伙伴可以参考下。

    数据库性能优化三:程序操作优化提升性能

    IN、NOT IN 操作符 IN和EXISTS 性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS 代替IN 。 Not IN 不走索引的是绝对不能用的,可以用NOT EXISTS 代替 2. IS NULL 或IS NOT NULL操作 索引是不索引空值的...

    Oracle数据库SQL语句优化策略

    尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替 用IN写出来的SQL的优点是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:...

    数据库_性能优化篇-2(1).docx

    2.避免使用不兼容的数据类型:如float和int,char和varchar等都是不兼容的。 3.尽量避免在where子句中对字段进行函数或表达式操作。 4.避免使用is not null、in等一些无法让系统使用索引操作的词。 5.合理使用exists...

    数据库-性能优化篇-1(1).docx

    2.避免使用不兼容的数据类型:如float和int,char和varchar等都是不兼容的。 3.尽量避免在where子句中对字段进行函数或表达式操作。 4.避免使用is not null、in等一些无法让系统使用索引操作的词。 5.合理使用exists...

    Oracle数据库Sql性能调优

    1.20 用NOT EXISTS替代NOT IN 12 1.21 用表连接替换EXISTS 13 1.22 用EXISTS替换DISTINCT 13 1.23 识别’低效执行’的SQL语句 14 1.24 用索引提高效率 14 1.25 索引的操作 15 1.26 多个平等的索引 16 1.27 等式比较...

    SQLServer 优化SQL语句 in 和not in的替代方案

    但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多...

    oracle sql性能调优

    基于成本、规则调优,对sql语句中的一些语句的优化,例如在什么情况下用exists代替in、not exists代替not in等。

    SQL性能优化

     LIKE可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。性能肯定大大提高。...

    ORACLE SQL性能优化系列(全)

    非常全面的ORACLE SQL性能优化介绍及实例:优化器的选择、共享SQL语句、访问Table的方式、减少访问数据库的次数、使用DECODE函数、减少对表的查询、通过内部函数提高SQL效率、用NOT EXISTS替代NOT IN、使用EXPLAIN ...

    laravel-wherehasin:Laravel wherehasin是一个可以提升Laravel ORM关联关系查询性能的扩展包,可以替代Laravel ORM中的wherehas以及whereHasMorphIn查询方法

    Laravel的关联关系查询whereHas在日常开发中给我们带来了极大的便利,但是在主表数据量比较多的时候会有比较严重的性能问题,主要是因为whereHas用了where exists (select * ...)这种方式去查询关联数据。...

    微软内部资料-SQL性能优化5

    As we’ll see, the clustered key is duplicated in every nonclustered index row, so keeping your clustered key small will allow you to have more index fit per page in all your indexes. Note The ...

    关系型数据库性能体系设计和效率提升.docx

    关系型数据库性能体系,设计和效率提升 1 1 前言 2 1.1目的 2 1.2预期的读者和阅读建议 2 2 数据库模型设计规范 2 2.1 数据库建模原则性规范 2 2.2 实体型之间关系认定规范 2 2.3 范式化1NF的规范 3 2.4 范式化2NF的...

Global site tag (gtag.js) - Google Analytics