私はPHPでMySQLを使い始めました。カスタム関数を作成できるかどうかを知りたいと思います。このコードスニペットは私が何をしようとしているのかを説明する必要があります。カスタムMySQL関数を作成しますか?
// a somewhat complicated formula not suitable to embed into the query
function Distance($latA, $lonA, $latB, $lonB)
{
// earth's radius
$radius = 3956;
$latA = deg2rad($latA);
$lonA = deg2rad($lonA);
$latB = deg2rad($latB);
$lonB = deg2rad($lonB);
// calculate deltas
$deltaLat = $latB - $latA;
$deltaLon = $lonB - $lonA;
// calculate Great Circle distance
$result = pow(sin($deltaLatitude/2.0), 2) + (cos($latA) * cos($latB) * pow(sin($deltaLon/2.0), 2));
$distance = $radius * 2 * atan2(sqrt($result), sqrt(1 - $result));
return $distance;
}
// how can I call Distance() in my query?
$query = "SELECT lat, lon FROM zipcodes WHERE Distance(lat, lon, 0, 0) < 20";
mysql_query($query);
ご協力いただきありがとうございます!
だけFYI、あなたは完全にクエリから見つけることを行うことができます。実際には、緯度/経度に基づいて空間インデックスを使用した場合、結果は印象的です。信じられないほどの事実。 – Layke
私はあなたが何を意味するか分からない、これを詳しく教えてもらえますか?また、「不適当」とは、パフォーマンスに関して(私はそれについては何も知らない)意味しませんでした。私はクエリがどれほど辛いほど長く続くかを意味しました。 –