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

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

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容