sql - 带有子查询的选项(MAXDOP)?

标签 sql sql-server tsql

SELECT [SomeColumn]
FROM [Table1] t1 
WHERE Table1ID = (
        SELECT [Table1ID]
        FROM [Table2] t2 
        WHERE t2.ID = 2
        OPTION (MAXDOP 4)
        )
OPTION (MAXDOP 4)

这会产生错误 Incorrect syntax near the keyword 'OPTION'.上第一OPTION (MAXDOP) 是否可以使用OPTION (MAXDOP )在子查询中?还是最后的OPTION (MAXDOP)也足以设置子查询的程度。

最佳答案

子查询在运行时可能不是一个整体。优化器可以将其拆开并重新排序所有内容。这个查询肯定不会像写的那样执行。因此子查询的 maxdop 不适用于 SQL Server 执行模型。

整个查询只能有一个 maxdop。这种限制是有逻辑原因的。

关于sql - 带有子查询的选项(MAXDOP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17161638/

相关文章:

sql - 为什么 postgresql 规划器不使用索引扫描而不是在存储函数中显式排序?

sql - 柱状数据库

asp.net - 我可以将 ASP.NET 成员身份与 SQL Server Compact Edition 一起使用吗?

sql-server - 计算开始时间和结束时间之间每小时的数量

sql - 如何跨 UNION 重复 SQL 查询的部分? (SQL 中的 DRY)

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 为特定记录更新 MySQL 数据库中的路径列

sql-server - 表达式变量在运行时发生变化

sql - 级联删除还是使用触发器?

sql - 将数字转换为数据类型数字的算术溢出错误