Отже, коротше кажучи,
- Яким має бути тип даних широти та довготи?
- Яку команду SQL я повинен зателефонувати, щоб отримати, наприклад, перші 100 найближчих ресторанів?
Детальніше:
У мене 100k бізнес запису кожен з широтою та довготою. Я бачу, що MySQL насправді підтримує тип даних під назвою точка. Чи варто використовувати це замість цього?
Чи підтримує MySQL систему зберігання KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
Краще використовувати тип даних даних, а не звичайний тип даних з поплавком для зберігання широти і довготи?
Врешті-решт, я хочу знайти такі речі, як перші 100 ресторанів, які є найближчими до точок 105,6, наприклад, і мої бази даних містять безліч біз-пойтів. Очевидно, що обчислення відстані одна за одною для кожного запису і для кожної точки буде O (n) і, отже, відстій.
Зауважте, що мені відомо простіше рішення, описане в розділі Як Application Like Yelp Ефективно отримувати інформацію про відстань від бази даних, і я застосую це також для початку. Це гарна відповідь.
Однак я думаю, що є одна відповідь на врожай, який повинен перевершити це право? Насправді, зберігання місця на основі широти та довготи та знаходження найближчих до нього матеріалів є дуже поширеною проблемою. Я думаю, що mysql має для цього спеціальний дизайн. Чи є це?
Де я можу дізнатися більше про це? Дякую.