gpt4 book ai didi

sql - 批处理与 SQL 语句

转载 作者:行者123 更新时间:2023-12-02 20:04:26 25 4
gpt4 key购买 nike

一)

A SQL statement is a single SQL command (for example, SELECT * FROM table1 or SET NOCOUNT ON). A batch on the other hand, is a number of SQL statements sent to the server for execution as a whole unit. The statements in the batch are compiled into a single execution plan. Batches are separated by the GO command

那么 SQL 语句和 Batch 之间的唯一区别在于,每个 SQL 语句作为单独的单元发送到服务器,因此与其他 SQL 语句分开编译,而 Batch 中的 SQL 语句则一起编译?

b)我认为存储过程和批处理之间的主要区别之一是存储过程是预编译的,而批处理不是?

谢谢

最佳答案

a.仅当每个 SQL 语句单独运行时(例如在 SSMS 中或在客户端上)。

即使不涉及 GO,两个语句 = 始终为“一批”。 GO 只是告诉 SSMS 等工具分解对引擎的提交。

b.不完全正确。存储过程是预先解析的,但在调用之前不会编译到执行计划中,并且尚未在计划缓存中。一次性解析和编译一批,并可能生成可重用的计划。

评论后编辑:

  • 术语“语句”和“批处理”是两个不同的概念
  • 发送到数据库引擎的任何文本都是一个批处理
  • 文本字面意思是:客户端工具不进行任何处理:仅将文本发送到数据库引擎
  • 文本由 SQL 语句组成

所以

  • 一批至少由一个文本字符/一个语句组成(但可以是 2、20 或 20,000 个语句)
  • GO 告诉 SQL 工具在哪里将“文本 block ”/“语句集合”分解为单独的数据库引擎调用(= 批处理)

关于sql - 批处理与 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732285/

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