美文网首页程序员不可不知的SQL
程序员不可不知的SQL查询优化系列之IN关键词优化

程序员不可不知的SQL查询优化系列之IN关键词优化

作者: OrangeHunter | 来源:发表于2018-11-21 22:52 被阅读32次

当子查询的时候,使用EXISTS替代IN。

IN的使用频率很高,因为语义性很强,很好理解。但是可能成为查询的瓶颈,因为IN是执行的全表扫描,所以一般优化代码中含有IN的语句就能大幅度提高性能。

如果IN是数值列表,那么不需要过多注意,如果是子查询,就要进行优化。

为什么使用EXISTS优化?理由如下:

  • 如果在关联列上建立了索引,那么查询子关联表的时候,不需要查询实际表,只需要查询索引即可。
  • 使用EXISTS,只要查询一行满足条件就会终止查询。

IN是扫描全表。当IN子句是查询的时候,那么数据库会优先执行子查询,并且会将结果存在一张临时表中(内联视图),然后扫描整个视图。这种操作会非常消耗资源。

还有一种方式就是使用连接代替IN,但是大多数情况下EXISTS更好!

相关文章

  • 程序员不可不知的SQL查询优化系列之IN关键词优化

    当子查询的时候,使用EXISTS替代IN。 IN的使用频率很高,因为语义性很强,很好理解。但是可能成为查询的瓶颈,...

  • Java面试题:数据库优化策略有哪些?

    1、Sql优化主要优化的还是查询, 优化查询的话, 索引优化是最有效的方案。 首先要根据需求写出结构良好的SQL,...

  • 11-mysqlSQL分析

    六星教育 - java-mysql优化1909 SQL优化 所谓SQL优化:基于MySQL的优化器查询规则来优化S...

  • 性能调优之SQL优化

    性能调优之SQL优化如何加快查询速度?1、升级硬件2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的...

  • MySQL | 使用 limit 优化查询和防止SQL被优化

    使用 limit 优化查询和防止SQL被优化 Table of Contents 查询优化 1.1 最大值和最小值...

  • 数据库练习三: 认识Explain

    介绍 EXPLAIN命令是查询性能优化不可缺少的一部分。使用explain关键字可以模拟优化器执行SQL查询语句,...

  • SQL优化

    SQL优化 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有...

  • MySQL实战14 慢查询优化join、order by、gro

    1.慢查询的优化思路 1.1优化更需要优化的SQL 优化SQL是有成本的高并发低消耗的比低并发高消耗影响更大 优化...

  • 17.MySQL优化

    《高性能MySQL》——这本书都有的 “字段”优化总结 “索引”优化总结 索引的优化 “查询SQL”优化总结 “引...

  • Oracle查询优化器(一)

    本系列文章将会介绍Oracle数据库中核心组件之一的查询优化器,并尝试从SQL执行的角度来介绍查询优化器的基础概念...

网友评论

    本文标题:程序员不可不知的SQL查询优化系列之IN关键词优化

    本文链接:https://www.haomeiwen.com/subject/xdohqqtx.html