我需要执行一个简单的查询。
从字面上看,我需要执行的是:
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/