SQL优化之用union all取代in或or测试
使用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
补充:数据库,Mssql