Optimised way to search over 2 milllion poi data in mysql We have over 2 million poi data in our mysql db. At any time we need to find what is the nearest point based on the following formula found at this link http://sqlfiddle.com/#!2/abba1/4

select *, ( 3959 * acos( cos( radians(
-- latitude
@my_lat) ) * cos( radians( 
destination.latitude ) ) * cos( radians( 
destination.longitude ) - radians(
-- longitude
@my_lon) ) + sin( radians(
-- latitude
@my_lat) ) * sin( radians( 
destination.latitude ) ) ) ) AS distance 
-- table containing targets to compare distance
from destination
order by distance limit 1
;


The problem we find this taking too long. Some forum suggest to limit the search based on +1 and -1 the lat and long value. The problem now we need to provide minimal one poi. So any optimisation help on this or better way of doing this?
You can use Geohashing (Geohasing)

You have to create a geohash for every POI in your table.

And then based on the precision that you choose you can use
LEFT(your_geohash_column,'c1','c3','c4','c5','c6',c7','c8')
Where the c's are the 8 neighbors from the center calculated by your desired precision. 

Keep in mind that you are limiting the results with the precision which you can consider it a radius.