我有三个连接,返回几百行的查询。当我从命令行运行它时,它始终需要8到9秒才能完成。但是,当我通过PDO运行它时,通常需要大约2分40秒才能完成。当我在运行“show processlist”时运行时,我发现大部分时间都花在了“复制到tmp表”的状态,这似乎只发生在我通过PDO运行时发生的情况。为什么mysql只在与PDO一起使用时创建临时表?
总结:
<? $pdo->prepare($query)->execute(); ?> => takes 2 minutes 40
$ echo $query | mysql; => takes 8 seconds
这是为什么?这完全是同一个查询;我真的在PHP和命令行之间复制和粘贴它。那么,为什么pdo要花费更多的时间呢?更重要的是,如何在不改变查询的情况下更快地执行执行?
你能显示查询吗? – BogdanM 2015-02-10 10:18:24
我们需要查询,您是否尝试了解由PDO运行的查询和控制台中的查询? – Salketer 2015-02-10 10:25:21
对查询进行解释并粘贴。 – Seti 2015-02-10 10:44:49