【问题标题】:What are prepared statements?什么是准备好的语句?
【发布时间】:2023-03-19 18:42:01
【问题描述】:

在关系数据库的上下文中,什么是准备好的语句?它们有什么帮助?我应该在什么时候考虑使用它们?

【问题讨论】:

    标签: sql-server database relational-database


    【解决方案1】:

    准备好的语句是由数据库预先解析的查询。您可以使用不同的参数值反复运行查询,而无需数据库每次都从头开始解析和规划查询。

    当您需要多次运行相同的查询时使用它,只有一些数据不时变化。

    【讨论】:

    • 并且有API(ADO.NET或其他)告诉数据库我希望它缓存计划以便我下次可以使用它?从 API 的角度来看,在执行命令时我需要做些什么不同的事情吗?
    • 一般情况下,数据库会自动缓存该计划,并将其重新用于相同的查询(在合理的时间范围内)。但是,这在一定程度上取决于最初编写查询的方式。如果查询是使用正确参数化的变量编写的,那么当变量更改时将使用相同的计划。如果将变量连接到 SQL 语句中,数据库每次都必须重新解析。