Как лучше хранить геомаршруты в MySQL для поиска в них?
Есть множество (несколько сотен тысяч) gps-маршрутов в файлах в gpx-формате. Нужно перегнать их в sql-хранилище с возможность поиска. Т.е. задан некий квадрат и нужно найти - какие маршруты проходят через этот квадрат.
Как пример - ищем по квадрату N-45 (координаты углов заранее известны), на выходе список id маршрутов.
Нужно использовать mySQL. Другие варианты не рассматриваются.
Я пока надумал два варианта:
1. 3 поля - lat (float), lon (float), routeId (int). Индексы на lat и lon. C помощью математического сравнения нахожу distinct routeid в заданном boundbox. Т.е. в таблице столько записей, сколько точек во всех маршрутах.
2. 2 поля - route (multistring), routeId (int). В таблице записей столько, сколько есть маршрутов. В каждой записи - все точки маршрута.
Какой вариант менее ресурсоемкий и наиболее быстрый?
Может быть есть более правильные варианты?
UPD - любители postgresql - ну пройдите же мимо, ясно написано, что только MySQL, даже тег соответствующий.
Если у вас заранее известная сетка, не проще при внесении маршрутов в базу просчитать, какой маршрут в какие квадраты попадает, и именно эту информацию хранить, а не выяснять при каждом запросе?
cjitkul33: Ну, у MySQL тоже есть кое-какие пространственные функции, но если вам нравится "в гамаке и стоя" и изобретать велосипед - кто же вам может запретить-то?
Moskus: для меня "стоя в гамаке" - это как раз постгрес, поэтому давайте не обсуждать эту тему. Тем более, что я изначально указывал - только MySQL. Если это вам кажется неправильным - пусть так, но не нужно навязывать свою точку зрения, тем более с присваиванием различного рода эпитетов.
Больше на эту отвечать не буду.