SQL优化之用union all取代in或or测试

作者:袖梨 2022-06-29

使用or:

 代码如下 复制代码

WHERE * FROM article
WHERE article_category=2
OR article_category=3
ORDER BY article_id DESC
LIMIT 5
// 执行时间:11.0777


使用in:

 代码如下 复制代码

SELECT * FROM article
WHERE article_category IN (2,3)
ORDER BY article_id DESC
LIMIT 5
// 执行时间:11.2850


使用union all:

 代码如下 复制代码

(
    SELECT * FROM article
    WHERE article_category=2
    ORDER BY article_id DESC
    LIMIT 5
) UNION ALL (
    SELECT * FROM article
    WHERE article_category=3
    ORDER BY article_id DESC
    LIMIT 5
)
ORDER BY article_id DESC
LIMIT 5
// 执行时间:0.0261

总结,从我们上面测试的实例可以看得出来,性能最好是union all了,in的性能最差,其次就是or了,所以在大数据量查询时我们最好使用union all

相关文章

精彩推荐