- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在 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/
我是一名优秀的程序员,十分优秀!