订阅本站

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

huangdijia 发表于 2011-11-21 分类 MySQL数据库技术 | 发表评论

使用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

原文地址:http://laiguowei2004.blog.163.com/blog/static/368290002011716111921116/

[使用Ctrl+回车快速提交]