Наприклад, скажіть, у мене є таблиця:
Business(BusinessID, Lattitude, Longitude)
Усі, звичайно, індексуються. Також є 1 мільйон записів
Скажімо, я хочу знайти бізнес, найближчий до 106,5, наприклад, як мені це зробити?
Якщо я це роблю
SELECT *
FROM Business
WHERE (Some formula to compute distance here) < 2000
наприклад, або якщо я це роблю
SELECT *
FROM Business
TOP 20
Теоретично комп'ютеру доведеться обчислювати відстань для всіх бізнес, тоді як на практиці лише ті, які мають широту і довготу в межах певного діапазону, який слід обчислити.
То як я можу робити, наприклад, що в PHP або SQL?
Я вдячний відповіді поки що. Я використовую mysql, і вони не мають нічого більш ефективного, ніж очевидне рішення. У просторі MySQL також немає функції обчислення відстані.