php - Querying lat , long from db and show all records with in range -


i working on program stores latitude , longitude of users (using mysql , php).

i need make query , show list of users within 100 km range.

i stuck below issues

  1. db design faster result. db structure fine? if want faster output index on both lat , long work? should use innodb or myisam engines in below case. querying result in above said case take time if have hundreds of thousands of records

my sql table structure:

id(int 11 primary key auto increment) | lat(varchar) | long(varchar) 
  1. is there direct sql function or code in can users in specified range? googled , found of them using cos this. way?

query gives output, slow:

select id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) distance  markers  having distance < 25  order distance limit 0, 20; 

if use mysql >= 5.6.1, use function st_distance, see http://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions-object-shapes.html#function_st-distance

it requires use point type coordinates.


Comments

Popular posts from this blog

javascript - Laravel datatable invalid JSON response -

java - Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; -

sql server 2008 - My Sql Code Get An Error Of Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '8:45 AM' to data type int -