PHP PDOStatement->执行非常慢

时间:2011-09-08 08:40:44

标签: php sql pdo

如果我用phpmyadmin执行一些查询,它会显示0.0002秒的经过时间,即0.2毫秒。 如果我使用PDO通过PHP执行相同的查询,则经过的时间(仅适用于下面示例代码中的第三行)是20毫秒。

$db = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::ATTR_PERSISTENT => true));
$cmd = $db->prepare($sql);
$cmd->execute(array($p1, $p2, $p3, $p4));

这段代码出了什么问题?

3 个答案:

答案 0 :(得分:3)

什么都没有,除了你首先准备语句然后执行,这将花费(一点点)更多时间。应该导致它的速度慢一百倍。尝试解释查询(EXPLAIN SELECT),看看它在做什么。我发现很难相信使用准备好的声明要慢得多。

答案 1 :(得分:2)

首先,PhpMyAdmin逐字执行查询。 PDO必须准备查询,解析参数,绑定它们,然后然后执行它。 这不是一个公平的比较。

其次,我不确定你得到的测量是否准确(0.2毫秒很快,我不希望任何查询)。

答案 2 :(得分:1)

如果第二个查询更快,则可能是连接时间。发送第一个查询时,将初始化与DB的连接。