【发布时间】:2013-03-12 13:00:35
【问题描述】:
我有一个问题,我需要查找具有与值匹配的度量的记录,或根本没有该度量。我用三种或四种不同的方法解决了这个问题,使用JOINs、使用NOT IN 和使用NOT EXISTS。但是,查询最终每次都非常慢。然后我尝试将查询一分为二,它们都运行得非常快(三秒)。但是使用OR 组合查询需要五分钟以上。
阅读所以我尝试了UNION,这非常快,但对于我正在使用的脚本来说非常不方便。
那么两个问题:
- 为什么
UNION这么快? (或者为什么OR这么慢)? - 有什么方法可以强制
MSSQL对OR语句使用另一种快速的方法吗?
【问题讨论】:
-
你能告诉我们你所指的sql吗?
-
也许向我们展示您尝试过的完整陈述?
-
我希望我们可以不用,因为我需要重命名所有字段和表。这真的特定于我的查询吗?根据我在 Google 上的发现,这是一个很常见的问题。
-
@occulus 我怎么没找到??
-
你不需要重命名所有的列,但是如果你有一个特定的问题,你需要创建一个 SQL fiddle。没有这些信息,对社区或您自己没有任何好处。我们对您的架构(索引等)一无所知
标签: sql sql-server union