【发布时间】:2011-04-08 03:35:02
【问题描述】:
我需要执行一个简单的查询。
从字面上看,我需要做的就是:
SELECT price, sqft, zipcode FROM homes WHERE home_id = X
当我使用 PHP PDO 时,我已经读过这是连接到 MySQL 数据库的推荐方法,只需创建连接就需要 610ms。。 p>
我的代码如下:
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 数据库以执行上述查询的最快方法是什么?
【问题讨论】:
-
你在 home_id 中设置了索引吗?你是通过 localhost 连接的吗?尝试使用 mysql_* 或 mysqli_*(即 mysqli_connect、mysqli_query 等)
-
是的,我在 home_id 上有一个索引。我的 Web 服务器与我的 MySQL 数据库服务器位于不同的物理服务器上
-
这是你问题的主要原因。您可以尝试将数据缓存在会话/存储文件中。
-
@user434493:如果您的 Web 服务器与 MySQL 数据库位于不同的物理机器上,那么网络延迟很可能是罪魁祸首,即使它们在同一个房间中彼此相邻.
-
你确定是库问题,而不是特定的服务器问题?
标签: php mysql performance pdo