gpt4 book ai didi

sql-server - 执行计划是每批还是每条语句?

转载 作者:行者123 更新时间:2023-12-04 17:45:32 25 4
gpt4 key购买 nike

我一直在 Microsoft 网站上阅读这篇文章 https://technet.microsoft.com/en-us/library/ms175502(v=sql.105).aspx .

它提到

A batch is a group of one or more Transact-SQL statements sent at the same time from an application to SQL Server for execution. SQL Server compiles the statements of a batch into a single executable unit, called an execution plan.

我认为每个查询(语句)都有自己的执行计划。执行计划是按批还是按语句?

最佳答案

"SQL Server compiles the statements of a batch into a single executable 
unit, called an execution plan. The statements in the execution plan are
then executed one at a time"

SQL 服务器为批处理制定执行计划。每个语句都有一个构成执行计划一部分的查询计划。您可以通过在单个窗口中运行多个语句并查看查询计划来证明这一点,每个语句都有一条标记为“相对于批处理”的信息。混淆可能在于,如果您运行单个语句,您的一个查询计划就是整个执行计划。 OP 引用的文章假设读者熟悉动态执行计划/查询计划。

问题中 OP 链接的文章中最重要的是使用批处理的规则。特别是前两个:

--If you CREATE a rule, constraint, or view in the batch, you cannot 
reference it by another statement in the same batch.

--If you alter a table, you cannot utilize the new schema in a different
query in the same batch.

这对我来说意味着 SQL Server 在执行批处理之前缓存所有语句的模式信息,并且在处理批处理时不更新模式信息。

从应用程序到服务器的批处理语句的另一个可能更重要且更常用的元素是事务的使用。如果您批处理的任何语句中出现错误,您可以使用事务来管理您的提交和回滚。这在标题为“批处理”的部分顶部附近的链接文章中有简要介绍

关于sql-server - 执行计划是每批还是每条语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48694201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com