【问题标题】:PHP PDOStatement->execute is very slowPHP PDOStatement->执行很慢
【发布时间】:2011-09-08 08:40:43
【问题描述】:

如果我使用 phpmyadmin 执行一些查询,它会显示经过的时间 0.0002 秒,即 0.2 毫秒。 如果我通过 PHP 使用 PDO 执行相同的查询,则经过的时间(仅针对下面示例代码中的第三行)为 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));

这段代码有什么问题?

【问题讨论】:

  • 这很正常,PDO 里面还有很多其他的东西
  • 在我更仔细地分析问题后,我发现查询略有不同; PDO 和 phpmyadmin 以相同的速度执行;

标签: php sql pdo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    其次,我不确定您获得的测量结果是否准确(0.2 毫秒太快了,我不希望 任何 查询)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 2013-08-14
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-16
        • 2020-01-29
        • 2018-12-31
        • 1970-01-01
        相关资源
        最近更新 更多