美文网首页程序员不可不知的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关键词优化

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