gpt4 book ai didi

php - 为什么 mysql 在与 PDO 一起使用时只创建临时表?

转载 作者:行者123 更新时间:2023-11-29 23:02:25 25 4
gpt4 key购买 nike

我有一个包含三个联接的查询,它返回几百行。当我从命令行运行它时,它始终需要 8 到 9 秒才能完成。然而,当我通过 PDO 运行它时,通常需要大约 2 分 40 秒才能完成。当我在运行时运行“show processlist”时,我发现大部分时间都花在“复制到临时表”状态,这似乎只在我通过 PDO 运行它时才会发生。

总结一下:

<? $pdo->prepare($query)->execute(); ?> => takes 2 minutes 40
$ echo $query | mysql; => takes 8 seconds

这是为什么呢?这是完全相同的查询;我实际上是在 php 和命令行之间复制并粘贴它。那么,为什么 pdo 执行时要花这么长时间呢?更重要的是,如何在不更改查询的情况下使执行速度更快?

最佳答案

一般来说,通过 PDO 运行查询会比本地运行查询慢。这是因为,据我所知,通过使用 PDO,您将经历三个层(在 PDO 下,您获得了 ODBC)。因此,与 native 相比,PDO 速度较慢是正常的。

由于您正在比较相同查询的时间,我认为您有很多行。我认为 PDO 难以以与 native 传送行相同的速度消耗大量行,从而减慢了进程。

如果出于某种原因将其与不使用索引结合起来,那么时间差异会更大。此时可以检查两个连接的字符集是否相同。

关于php - 为什么 mysql 在与 PDO 一起使用时只创建临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28429074/

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