PHP:查询 MySQL 最快的方法是什么?因为 PDO 非常慢

标签 php mysql performance pdo

我需要执行一个简单的查询。

从字面上看,我需要执行的是:

SELECT price, sqft, zipcode FROM homes WHERE home_id = X

当我使用 PHP PDO 时,据我所知,这是连接到 MySQL 数据库的推荐方法,创建连接仅需要 610 毫秒。。

我的代码如下:

try {
    $conn_str = DB . ':host=' . DB_HOST . ';dbname=' . DB_NAME;
    $dbh = new PDO($conn_str, DB_USERNAME, DB_PASSWORD);
    $params = array();    
    $sql = 'SELECT price, sqft, zipcode FROM homes WHERE home_id = :home_id';
    $params[':home_id'] = X;
    $stmt = $dbh->prepare($sql);    
    $stmt->execute($params);
    $result_set = $stmt->fetchAll(PDO::FETCH_ASSOC);
    // json output  
    ob_start("ob_gzhandler");
    header('Content-type: text/javascript; charset=utf-8');
    print "{'homes' : ";
    print json_encode( $result_set );
    print '}';
    ob_end_flush();
    $dbh = null;
} catch (PDOException $e) {
    die('Unable to connect');
}

问题:连接到我的 MySQL 数据库以执行上述查询的最快方法是什么?

最佳答案

如果缓慢是由于每个连接都必须通过网络到达,而 mysql 必须进行反向 DNS 查找以检查其 GRANTs 表,那么这种开销很可能是延迟的很大一部分。切换到持久连接将使其成为连接生命周期的一次性成本。

但是,这确实会导致其他问题。由于事务会回滚并在持有它们的连接关闭时释放锁,因此持久化意味着它们将保持事件状态。如果不在代码中特别注意不要让连接处于不一致状态,您很可能会造成死锁或至少锁定所有其他连接,直到您手动进入并清理。

关于PHP:查询 MySQL 最快的方法是什么?因为 PDO 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641038/

相关文章:

php - Mysql在特定日期之间计数和分组

javascript - 选择表单后从数据库获取隐藏的输入值

php - mysql_close() : supplied argument is not a valid MySQL-Link

mysql - Joins - 将结果合并到单个多维数组中

mysql - SQL 内连接性能建议

c++ - 获取运行特定进程的处理器数量

PHP 三元运算符错误

php - 如何通过 CodeIgniter 中的 get 请求获取当前 url?

mysql - 将两个表中的列合并为一个结果,然后在 SELECT 查询中使用

使用 GADT 的性能影响