ローカル コンピューターで php を実行しています。ローカル コンピューターには heidisql もあります。digitalocean にサーバーをセットアップしたところ、mysql がインストールされています。ローカル マシンで PHP を使用してクエリを実行する7.81
と、ページがクエリを実行するのに約数秒かかります。クエリを heidisql にコピーすると、同じクエリの実行0.141
に数秒かかります。PHP が遅くなる原因は何ですか?
注:デジタル オーシャンに切り替える前に、PHP バージョンは約1
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>";