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

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

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

  1. 我编译了脚本xxxx

  2. 我执行了脚本 xxxx

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

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

非常感谢。

【问题讨论】:

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

标签: sql sql-server tsql


【解决方案1】:

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

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

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

最后

  • 执行

【讨论】:

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