在两个select语句上使用UNION或UNION ALL会使它们变得非常慢

Jay*_*Jay 5 t-sql union sql-server-2008

我有两个查询,我们称之为查询A和查询B.

对于我正在测试的场景,这两个查询都在一秒钟内运行,而查询A返回1个结果,而查询B返回0个结果.

如果我联合(或联合所有)这两个查询,则返回(预期)1结果需要一分多钟.

两个查询都从同一个表中选择相同的列.我可以通过拥有一个高度条件的where子句来重写整个没有联合的东西,但我试图摆脱这样做.

有任何想法吗?我不确定我可以通过共享获得多少确切的查询和架构,但我很乐意提供我能做到的.

如果对任何人的回复都很重要,这是在MSSQL 2008上.

Mic*_*son 2

我会尝试查看 Management Studio 中各个查询的执行计划,然后将其与包含 UNION 的查询的执行计划进行比较。

如果执行时间存在如此巨大的差异,我会认为 UNION 查询的执行计划有问题。找出不同之处将有助于为您(也许还有我们)指出根本问题所在的正确方向。