我从未清楚了解MAXDOP
的用法。我确实知道它可以使查询速度更快,并且这是我可以用于查询优化的最后一项。
但是,我的问题是,何时何地最适合在查询中使用它?
最佳答案
如Kaboing所述,MAXDOP(n)
实际上控制查询处理器中使用的CPU内核数。
在完全空闲的系统上,SQL Server将尝试将表尽快拉入内存并在内存之间将它们联接。在您的情况下,最好使用单个CPU来完成此操作。这可能与使用OPTION (FORCE ORDER)
的效果相同,后者迫使查询优化器使用您指定的联接顺序。在某些情况下,我看到OPTION (FORCE PLAN)
将查询从执行时间的26秒减少到1秒。
联机丛书继续说MAXDOP
的可能值为:
我不确定MAXDOP
的最佳用法是什么,但是我猜测一下,如果您有一个带有8个分区的表,由于I / O的限制,您想指定MAXDOP(8)
,但是我可以错误。
这是我发现的有关MAXDOP
的一些快速链接:
Books Online: Degree of Parallelism
General guidelines to use to configure the MAXDOP option
关于sql - 在SQL Server中使用OPTION(MAXDOP 1)的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/163917/