|
|
1
8
使用参数化查询时,可以准备一次,然后插入不同的目标值。由于同一个操作具有不同的数据,因此无需每次重新生成执行计划。为了扩展“编译”的比喻,这就像用不同的配置文件重新运行同一个程序一样。 但是,当您附加这些值时,您是在将它们硬编码到查询中,因此每次都必须重新准备,并且您需要为每次迭代构建新的执行计划。再次使用“编译”比喻,这就像一个C程序,其所有配置都是硬编码的——更改一个设置,您必须重新编译整个程序。 (在执行大规模插入时,您可能会遇到的另一个主要成本是更新索引。如果您的表已编制索引,您可能希望尝试关闭它们、执行插入并重新启用它们,以便只需重新编制索引一次,而不必在添加每行之后重新编制索引。) |
|
|
2
5
简单。分析和准备查询的执行计划需要很多时间,甚至在查询执行开始之前。 当您将参数作为文本附加到查询中时,每个查询都是不同的,所以DB需要解析它并准备执行计划。 当您使用参数时,您会多次发送相同的查询(使用不同的数据),DB可以简单地重用先前调用中的执行计划。 在大多数情况下,这只是查询之间的文本比较。 例如,在MS SQL Server中,更改字母的大小写或在查询末尾添加空格就足以迫使DB重新创建执行计划。 |
|
3
4
根据所使用的数据库,通常的原因是参数化查询只需编译一次,而动态查询版本在每次使用时都会重新编译。 |
|
4
3
|
|
5
0
我打赌如果使用多个值,速度不会更快
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |