我可以在 IF 语句中使用 OPTION (MAXDOP 1) 进行查询吗?

Can I use OPTION (MAXDOP 1) for a query within an IF statement?

我想先说明一个事实,即我知道使用 OPTION (MAXDOP) 通常是不受欢迎和不受欢迎的。但是,仅仅说“不要使用 OPTION (MAXDOP)”并不能解决手头问题的狭隘焦点。出于这个问题的目的,假设我有一个场景,我被逼到了一个角落,由于其他问题超出了我实际想要问这个特定问题的范围,这是我坚持的事情。请暂时不要拘泥于这些原因。专门针对这个问题,我正在编写一个存储过程,其中我有一个 IF 语句,例如:

IF ((SELECT TOP 1 Identifier 
     FROM SomeTable 
     WHERE <some conditions>) IS NOT NULL)
BEGIN 
    <do some stuff>
END

我希望 IF 语句中的查询 运行 和 OPTION (MAXDOP 1) - 同样,我知道这通常不是您想要做的,为了方便,让我们保留该讨论这个问题。我可以这样做吗?似乎我是将 OPTION (MAXDOP 1) 位放在带有 IF 的行的末尾,紧接在 IS NOT NULL 之后,还是在 <some conditions> 之后,我的查询编辑器告诉我那里不允许这样做。有什么地方可以放置它来实现这种情况吗?

有意思。似乎您不能对不是派生 table 的括号中的查询使用查询提示 - 即,需要单个值的查询。其实我也不知道这个子句是怎么调用的,通过文档搜索一下,欢迎有启发的回答。

不过,您可以使用变量来执行您想要的操作:

SELECT TOP 1 @identifier=Identifier 
FROM SomeTable 
WHERE <some conditions>
option (maxdop 1)

IF @identifier IS NOT NULL......