📜  静态和动态 SQL 之间的区别

📅  最后修改于: 2021-09-09 16:17:35             🧑  作者: Mango

静态或嵌入式SQL 是应用程序中的 SQL 语句,在运行时不会更改,因此可以硬编码到应用程序中。动态SQL 是在运行时构造的 SQL 语句;例如,应用程序可能允许用户输入他们自己的查询。

动态SQL 是一种编程技术,使您能够在运行时动态构建 SQL 语句。您可以使用动态 SQL 创建更通用、更灵活的应用程序,因为 SQL 语句的全文在编译时可能是未知的。

使用静态 SQL 的好处是优化了语句,从而使应用程序具有高性能,因为它提供了比动态 SQL 更好的灵活性,并且由于动态语句的访问计划是在运行时生成的,因此必须在应用程序,这是你永远不会在静态 SQL 中看到的东西,但这并不是它们之间的唯一区别,所以我们可以说动态 SQL 比静态语句只有一个优点,一旦应用程序就可以清楚地注意到编辑或升级,因此对于动态语句,只要在运行时生成访问计划,就不需要预编译或重新构建,而静态语句需要在修改后重新生成访问计划,此外动态SQL需要更多的权限,也可能是执行未经授权的代码的方式,我们不知道是什么样的用户,我们将有,所以为了安全也可以是如果程序危险梅尔没有处理它。

下面提到的是静态嵌入式动态交互式SQL 之间的基本区别:

    Static (Embedded) SQL Dynamic (Interactive) SQL
    In Static SQL, how database will be accessed is predetermined in the embedded SQL statement. In Dynamic SQL, how database will be accessed is determined at run time.
    It is more swift and efficient. It is less swift and efficient.
    SQL statements are compiled at compile time. SQL statements are compiled at run time.
    Parsing, Validation, Optimization and Generation of application plan are done at compile time. Parsing, Validation, Optimization and Generation of application plan are done at run time.
    It is generally used for situations where data is distributed uniformly. It is generally used for situations where data is distributed non uniformly.
    EXECUTE IMMEDIATE, EXECUTE and PREPARE statements are not used. EXECUTE IMMEDIATE, EXECUTE and PREPARE statements are used.
    It is less flexible. It is more flexible.

动态 SQL 的限制:
我们不能动态使用某些 SQL 语句。
与静态 SQL 相比,这些语句的性能较差。

静态 SQL 的限制:
它们在运行时不会改变,因此被硬编码到应用程序中。