|
|
1
8
使用参数化查询时,可以准备一次,然后插入不同的目标值。由于同一个操作具有不同的数据,因此无需每次重新生成执行计划。为了扩展“编译”的比喻,这就像用不同的配置文件重新运行同一个程序一样。 但是,当您附加这些值时,您是在将它们硬编码到查询中,因此每次都必须重新准备,并且您需要为每次迭代构建新的执行计划。再次使用“编译”比喻,这就像一个C程序,其所有配置都是硬编码的——更改一个设置,您必须重新编译整个程序。 (在执行大规模插入时,您可能会遇到的另一个主要成本是更新索引。如果您的表已编制索引,您可能希望尝试关闭它们、执行插入并重新启用它们,以便只需重新编制索引一次,而不必在添加每行之后重新编制索引。) |
|
|
2
5
简单。分析和准备查询的执行计划需要很多时间,甚至在查询执行开始之前。 当您将参数作为文本附加到查询中时,每个查询都是不同的,所以DB需要解析它并准备执行计划。 当您使用参数时,您会多次发送相同的查询(使用不同的数据),DB可以简单地重用先前调用中的执行计划。 在大多数情况下,这只是查询之间的文本比较。 例如,在MS SQL Server中,更改字母的大小写或在查询末尾添加空格就足以迫使DB重新创建执行计划。 |
|
3
4
根据所使用的数据库,通常的原因是参数化查询只需编译一次,而动态查询版本在每次使用时都会重新编译。 |
|
4
3
|
|
5
0
我打赌如果使用多个值,速度不会更快
|
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
|
Dante · Django::配置不当:池不支持持久连接 1 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |