批处理与SQL语句
(a) SQL语句是单个SQL命令(例如,从表1中选择*或将NOCOUNT设置为ON)。另一方面,批处理是发送到服务器以作为一个整体执行的许多SQL语句。批处理中的语句被编译成单个执行计划。批次由GO命令分隔 所以SQL语句和批处理之间的唯一区别是,每个SQL语句作为一个单独的单元发送到服务器,因此与其他SQL语句分开编译,而批处理中的SQL语句一起编译 b) 我假设存储过程和批处理之间的一个主要区别是存储过程是预编译的,而批处理不是批处理与SQL语句,sql,sql-server,tsql,Sql,Sql Server,Tsql,(a) SQL语句是单个SQL命令(例如,从表1中选择*或将NOCOUNT设置为ON)。另一方面,批处理是发送到服务器以作为一个整体执行的许多SQL语句。批处理中的语句被编译成单个执行计划。批次由GO命令分隔 所以SQL语句和批处理之间的唯一区别是,每个SQL语句作为一个单独的单元发送到服务器,因此与其他SQL语句分开编译,而批处理中的SQL语句一起编译 b) 我假设存储过程和批处理之间的一个主要区别是存储过程是预编译的,而批处理不是 thanxa。仅当每个SQL语句单独运行时(例如在SSMS中
thanxa。仅当每个SQL语句单独运行时(例如在SSMS中或在客户端上) 即使不涉及GO,也始终有两条语句=“一批”。GO只告诉SSMS之类的工具分解提交给引擎的数据 b。不完全正确。存储的过程是预解析的,但在调用之前不会编译到执行计划中,并且不会在计划缓存中。批处理可以一次性解析和编译,并且可以生成可重用的计划 评论后编辑:
- 术语“语句”和“批处理”是两个不同的概念
- 发送到DB引擎的任何文本都是批处理
- 文本的字面意思是:客户端工具不进行任何处理:只有文本被发送到DB引擎
- 文本由SQL语句组成
- 批处理至少由一个字符的文本/一条语句组成(但可以是2条、20条或20000条语句)
- GO告诉SQL工具在何处将“文本块”/“语句集合”分解为单独的DB引擎调用(=批处理)