gpt4 book ai didi

php - mysqli_query 和 bind_param 之间性能差异 10 倍(PHP 7)

转载 作者:行者123 更新时间:2023-11-29 11:18:57 26 4
gpt4 key购买 nike

我试图向数据库中插入一些内容,并决定使用两种不同的方式来查看查询性能。

我用过(end_microtime -starting_microtime) 方式查看正在发生的情况。

绑定(bind)参数代码:

<?php
timer_start = microtime(TRUE);


$db = @new mysqli('localhost','root','','database');
$username = "username";
$email= "test@html.com";
$password = "123456789";

$query = "INSERT INTO users (username,email,password) VALUES (?,?,?)";
$stmt = $db->prepare($query);

$stmt->bind_param("sss", $username, $email, $password);
$stmt->execute();

$stmt->close();

$timer_end = microtime(TRUE);
echo($timer_end - $timer_start);

?>

结果:~ 0.090020895004272

mysqli_query代码(现在改之前有语法错误)

<?php
$timer_start = microtime(TRUE);


$db = @new mysqli('localhost','root','','database');
$username = "username";
$email= "asdf@ghj.com";
$password = "123456789";

$query = "INSERT INTO users (username,email,password)
VALUES ('$username','$email','$password')";
mysqli_query($db,$query);

$timer_end = microtime(TRUE);
echo($timer_end - $timer_start);

?>

结果 = ~ 0.00070500373840332

问题是:为什么会发生这种情况?

最佳答案

普通查询和准备好的语句之间的差异始终存在,因为对于后者,您需要两次到数据库,一次准备查询,一次执行。

但是,您不必认为准备好的语句会慢 2 倍,因为查询执行过程涉及的操作远多于服务器的往返操作,其中大部分是这两种方法都很常见,并且需要更多时间(例如将数据存储在硬盘上)。

当然,没有像 10 倍那么大的差异。在您的情况下,这只是因为由于愚蠢的语法错误,第二个查询永远不会被执行

关于 PDO 的结果,这是因为默认情况下 PDO 只是伪造准备好的语句,自行处理绑定(bind)数据,然后发送常规查询。尽管 .0002 和 .0009 之间所谓的任何差异都不应该给您留下太深的印象,因为它们都适合测量误差。

关于php - mysqli_query 和 bind_param 之间性能差异 10 倍(PHP 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275574/

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