【发布时间】:2018-02-08 20:25:06
【问题描述】:
我一直在微软网站https://technet.microsoft.com/en-us/library/ms175502(v=sql.105).aspx阅读这篇文章。
提到
批处理是一组一个或多个 Transact-SQL 语句,同时从应用程序发送到 SQL Server 以供执行。 SQL Server 将批处理的语句编译成单个可执行单元,称为执行计划。
我认为每个查询(语句)都有自己的执行计划。 执行计划是按批次还是按语句?
【问题讨论】:
-
如果你同时运行两条语句,你会得到一个还是两个计划?
-
@JacobH 我看到了两个图表,但我不确定我看到了多少“执行计划”,因为我对执行计划的定义感到困惑。也许它们只是执行计划(批量编译)的一部分(语句编译)?如果我放两个语句然后放一个 GO,也许是一个计划?如果我在每条语句之后加上 GO,也许有两个计划?文章也提到了语句级编译。
-
是的,但是当您运行两条语句时,您会得到一个执行计划,可能有多个批次,包含多个查询计划 i>.
-
@JacobH 这很有趣,但同时也令人困惑。不管我是否用“GO”分隔我的两个语句,这两个语句似乎在 XML 中是分开的。我以为GO是用来分批的?我还看到该计划有一个
元素包裹其他元素;所以执行计划是按“批处理序列”而不是批处理? -
试试看?
标签: sql-server