sql – 为什么UNION比OR语句更快

前端之家收集整理的这篇文章主要介绍了sql – 为什么UNION比OR语句更快前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > UNION ALL vs OR condition in sql server query3个
我有一个问题,我需要找到具有与值匹配的测量值,或根本没有测量值的记录.我用三种或四种不同的方法解决了这个问题,使用JOIN,使用NOT IN和使用NOT EXISTS.但是,查询最终每次都非常慢.然后我尝试将查询分成两部分,它们都运行得非常快(三秒钟).但是使用OR组合查询需要超过五分钟.

阅读SO我尝试了UNION,这非常快,但对我正在使用的脚本非常不方便.

所以有两个问题:

>为什么UNION这么快? (或者为什么OR这么慢)?
>有什么办法可以强制MSsql快速的OR语句使用不同的方法吗?

解决方法

原因是在查询中使用OR通常会导致查询优化器放弃使用索引搜索并恢复扫描.如果查看两个查询的执行计划,您很可能会看到扫描您正在使用OR的位置,并寻找您使用UNION的位置.在没有看到您的查询的情况下,您无法就如何重组OR条件给出任何想法.但是您可能会发现将行插入临时表并连接到它可能会产生积极的结果.

此外,如果您想要所有结果,通常最好使用UNION ALL而不是UNION,因为您删除了行匹配的成本.

原文链接:https://www.f2er.com/mssql/84142.html

猜你在找的MsSQL相关文章