使用PHP时查询速度较慢

使用PHP时查询速度较慢,php,mysql,sql,Php,Mysql,Sql,我在本地计算机上运行php,在本地计算机上也有heidisql。我刚刚在digitalocean上安装了一个服务器,并在上面安装了mysql。当我在本地机器上使用PHP运行查询时,页面运行查询大约需要7.81秒。当我将查询复制到heidisql中时,运行相同的查询需要0.141秒。什么会导致PHP速度变慢 注意:在我切换到digital ocean之前,PHP版本运行了大约1秒,PHP没有改变 以下是我正在运行的PHP: $db = new Database(); $start = micro

我在本地计算机上运行php,在本地计算机上也有heidisql。我刚刚在digitalocean上安装了一个服务器,并在上面安装了mysql。当我在本地机器上使用PHP运行查询时,页面运行查询大约需要7.81秒。当我将查询复制到heidisql中时,运行相同的查询需要0.141秒。什么会导致PHP速度变慢

注意:在我切换到digital ocean之前,PHP版本运行了大约1秒,PHP没有改变

以下是我正在运行的PHP:

$db = new Database();

$start = microtime(true);

$db->query("
set @miles = 10;

select
@lat := latitude,
@lon := longitude,
@city := accent,
@country := country,
#@region := region,
@city_id := cc.city_id
from cities cc
inner join countries c on cc.country_id = c.country_id
inner join regions r on cc.region_id = r.region_id and c.country_id = r.country_id
left join locations l on cc.city_id = l.city_id
where city = 'rosemount' and country = 'us' and r.region = 'mn'
limit 1;
");

$cities = $db->getAll("
SELECT c.city_id as id, 
accent as city, 
country as country, 
region, 
latitude, 
longitude,
distance(@lat, @lon, latitude, longitude) as `distance`,
direction(@lat, @lon, latitude, longitude) `direction`
FROM locations l
inner join cities c on l.city_id = c.city_id
inner join regions r on c.region_id = r.region_id
inner join countries cu on c.country_id = cu.country_id
WHERE MBRContains(
    LineString(
        Point(
            @lat + @miles / 68.703, 
            @lon + @miles / (68.703 / COS(RADIANS(@lat)))
        ), 
        Point(
            @lat - @miles / 68.703, 
            @lon - @miles / (68.703 / COS(RADIANS(@lat)))
        )
    ), location)
and l.city_id != @city_id
order By `distance`
");

echo "<p>" . round(microtime(true) - $start, 2) . "</p>";

echo "<pre>";
print_r($cities);
echo "</pre>";

您是否从本地副本连接到远程数据库?是的,但这有关系吗?它在一个应用程序中运行得很快,在另一个应用程序中运行得很慢……我重新启动了mysql,现在页面在长时间的页面加载中出错了,但是heidisql在不到一秒钟的时间内仍然在运行查询。为什么?我发现是PDO导致了这个问题,因为当我尝试使用mysql_查询时,它只运行了大约0.36秒…修复了PDO部分!我将查询拆分,而不是在一个PDO命令中执行两个查询,现在每个命令执行一个查询,这将使其速度提高到heidisql的速度!