SQL 中的脚本被编译或执行

Posted

技术标签:

【中文标题】SQL 中的脚本被编译或执行【英文标题】:Scripts in SQL are compiled or executed 【发布时间】:2019-03-18 02:47:41 【问题描述】:

这有点像存在主义的怀疑......

在 SQL 中运行脚本的正确说法是什么?

    我编译了脚本xxxx

    我执行了脚本 xxxx

我知道问这个有点奇怪和菜鸟,但我需要知道。

我很确定第二种方式是正确的,但我需要更多的意见。

非常感谢。

【问题讨论】:

一个“运行”或“执行”脚本。汇编在幕后。我不太喜欢“执行”,听起来好像有人要死了。 谢谢。这是因为我工作的地方几乎每个人都说“编译脚本”,我觉得这不正确。 作为一名前程序员,从不编译脚本,这就是为什么它们被称为脚本,因为它们是由解释程序/引擎运行的。编译程序源代码以构建执行的机器代码。至于 SQL,我通常会说已执行、运行或部署了与之关联的更改。 公平地说,几乎在任何编程环境中,编译都在执行。它只是让源处于执行状态。 @ChadEstes 我觉得和你一模一样。对我来说,脚本是运行或执行的,但不是编译的。我感谢你所有的 cmets 家伙。非常感谢您的帮助。 【参考方案1】:

这取决于你真正想说什么。

SQL Server 中的所有查询在执行之前都遵循相同的过程。

解析 - 语句被分解为单个单词。在此步骤中会检测到语法错误和拼写错误。 验证(又名解析)- 确保对象的名称存在以及正确的所有权权限。 优化 – SQL Server 探索了执行查询的不同方法。 编译 - SQL Server 生成执行计划(执行树的二进制表示)

最后

执行

【讨论】:

我想补充一点,存储过程的处理方式与视图和语句不同。在大多数软件公司中,您会看到它们使用视图来存储和构建查询。但是存储过程确实是编译和保存的,所以它们要快得多。每次执行视图或语句都会被解释,存储过程在每次执行后变得越来越快。 @Tarabass 同样,这取决于(自上次执行以来的物理设计更改、存储过程定义中选项的使用、自上次执行以来 SQL Server 的状态)。请看docs.microsoft.com/en-us/sql/relational-databases/… 非常感谢您提供的信息。我会记在心里向我的队友解释。

以上是关于SQL 中的脚本被编译或执行的主要内容,如果未能解决你的问题,请参考以下文章

SQL脚本中的go是啥意思

如何执行sql脚本?

kettle的阻塞数据阻塞数据直到完成执行SQL脚本

执行SHELL脚本,传入参数,参数应该被里边的sql所用,请问怎么写

web中的“脚本”是何意?“脚本优化”又是何意?

sqlserver 2012怎么执行sql脚本