PHP/MySQL での地理検索クエリのパフォーマンスの最適化
距離計算を伴う地理空間クエリは、特に大規模なクエリでは、計算コストが高くなる可能性があります。データセット。 MySQL でこのようなクエリのパフォーマンスを最適化するには、さまざまなアプローチを検討することが重要です。
クエリで述べたように、緯度と経度のペアのエントリが約 200,000 個あるテーブルがあります。タスクは、指定された座標から指定された半径内にあるエントリを検索することです。
境界ボックス アプローチ
効果的な手法の 1 つは、指定された半径を囲む境界ボックスを計算することです。ターゲットの緯度/経度の周り。これには、境界ボックスを定義する最小および最大の緯度と経度の値を見つけることが含まれます。クエリでは距離の計算を境界ボックス内の行のサブセットに制限できるため、計算の数が大幅に削減されます。この方法については、Movable Type の Web サイトで詳しく説明されています。
PHP ライブラリの考慮事項
ライブラリが最適化されている場合、PHP ライブラリを使用して計算を処理すると効率的になります。スピード。ただし、Haversine 式の精度に関する懸念は的中します。
Vincenty 式
より正確な結果を得るには、Vincenty 式の使用を検討してください。これは、楕円体の地球の大圏距離を計算するためのより正確な方法です。応答で提供された PHP コード サンプルには、計算の精度を向上させるために実装できる Vincenty 式が組み込まれています。
その他の考慮事項
パフォーマンスをさらに最適化するには:
以上が大規模なデータセットに対して PHP/MySQL で地理検索クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。