gpt4 book ai didi

sql - 为什么使用参数化查询将数据插入表中比将值附加到查询字符串更快?

转载 作者:太空狗 更新时间:2023-10-30 01:47:59 25 4
gpt4 key购买 nike

为什么要使用参数化查询向表中插入数据:

string queryString = "insert into product(id, name) values (@id, @name)";

比将值附加到查询字符串更快:

string queryString = "insert into product(id, name) values (" + _id + ", " + _name + ")";

?

当我在循环中使用命令插入 10K 行时,参数化查询比另一个快一个数量级。

我知道参数化查询具有安全性和可维护性优势,并且是推荐的使用方式,但现在我想知道为什么它要快得多的解释?

最佳答案

一般来说,执行 SQL 查询最昂贵的部分是构建执行计划 - 确定将需要哪些表,确定要使用的最佳索引(如果有的话)等。您可以将其视为“如果愿意,可以编译“查询。

当您使用参数化查询时,您可以准备一次,然后插入不同的目标值。由于是同一个操作,不同的数据,不需要每次都重新构建执行计划。扩展“编译”的隐喻,这就像用不同的配置文件重新运行同一个程序。

但是,当您追加这些值时,您将它们硬编码到查询中,因此每次都必须重新准备,并且您需要为每次迭代构建新的执行计划。再次使用“编译”比喻,这就像一个 C 程序,其所有配置都被硬编码 - 更改一个设置,您必须重新编译整个程序。

(执行批量插入时可能遇到的另一个主要成本是更新索引。如果您的表已建立索引,您可能想尝试关闭它们,执行插入,然后重新打开它们,这样它只需要重新索引一次而不是在添加每一行之后。)

关于sql - 为什么使用参数化查询将数据插入表中比将值附加到查询字符串更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com