gpt4 book ai didi

mysql - 具有多个插入的准备好的语句与常规查询

转载 作者:可可西里 更新时间:2023-11-01 07:35:39 26 4
gpt4 key购买 nike

如果你会考虑下表

table_A (id (PK), value1, value2)

如果我要插入一组数据,例如:(1,5), (1,3), (3,5)

我可以执行如下查询:

INSERT INTO table_A (value1, value2) VALUES (1,5), (1,3), (3,5)

哪个可行。但是,有人告诉我准备好的陈述会更好。查看准备好的陈述,似乎我必须做这样的事情

$stmt = $dbh->prepare("INSERT INTO table_A (value1, value2) VALUES (?, ?)");
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);

//for each set of values
$value1 = 1;
$value2 = 5;
$stmt->execute();

我的问题是,准备好的语句如何比第一种方法更好(性能方面)?一个是单个查询,另一个涉及同一查询的多次执行。第一个查询会被编译成三个单独的查询吗?

最佳答案

当您只插入一次时,准备好的语句本身不会更快。但是,如果您需要多次运行相同的插入,您将节省解析查询和准备查询计划所需的时间。准备好的语句插入将被解析一次,它的计划将被缓存,然后重新用于所有后续插入。另一方面,具有多个嵌入值的语句将需要在每次运行新语句时重新处理,从而减慢处理速度。

另一方面,网络往返也很慢。进行额外的往返可能比解析和准备查询计划要慢,因此您应该在以任何方式做出决定之前进行分析。

关于mysql - 具有多个插入的准备好的语句与常规查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188221/

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