Home >Database >Mysql Tutorial >How to Efficiently Find Coordinates Within a 5-Mile Radius Using MySQL?
Finding Coordinates Within a Range with MySQL
To improve database performance and reduce processing demands, it's desirable to optimize queries that retrieve specific data within a specified range. In this scenario, you have a database with 100,000 addresses, each with its latitude and longitude coordinates. Your goal is to display only the addresses located within a 5-mile radius of a given user's location, effectively narrowing down the results from 100,000 to around 5 or 6.
To solve this problem efficiently, you can utilize the Haversine formula directly in your MySQL query. This mathematical formula computes the distance between two points on a sphere using their respective latitude and longitude values.
Here's how you can incorporate the Haversine formula into your query:
$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
In this query, replace $lat and $lng with the latitude and longitude coordinates of the user's location. The result of this query will be a list of addresses with their distance from the user's location specified in the distance column. You can then use this list to filter out the addresses that fall within the 5-mile range.
By applying the Haversine formula directly in MySQL, you can significantly reduce the number of records retrieved and improve the performance of your database operation. This method ensures that only the relevant addresses are returned, minimizing unnecessary processing and improving the responsiveness of your application.
The above is the detailed content of How to Efficiently Find Coordinates Within a 5-Mile Radius Using MySQL?. For more information, please follow other related articles on the PHP Chinese website!