2016-05-04 3 views
0

Существует два пробела, названных, например. Company и Cars. Пространство Company имеет идентификатор компании (первичный индекс) и геолокационные (точечные) поля (вторичный индекс). Пространство Cars имеет автомобиль (первичный индекс) и компании (массив всех компаний, где можно взять этот автомобиль). Мне нужно получить 10 ведущих компаний в указанном прямоугольнике, где можно взять напрокат конкретный автомобиль. Какое (если можно так сказать) лучшее решение для достижения этого?Комплекс SELECT в Tarantool

Здесь мне нужно объединить пространственные и не пространственные индексы, чтобы получить результат. Мой поисковый план - это поиск кортежа и получение всех компаний (их может быть 1000), а затем в другом месте для фильтрации 10 из указанного прямоугольника.

Мой прецедент - это что-то похожее на это (а не на аренду автомобиля), но вся логика такая же. Будет гораздо больше компаний, чем автомобилей (в миллионах от . Компании и 300-500k от Автомобили). Как оптимизировать мой план, чтобы получить эту информацию, какие индексы использовать и т. Д.? Как вы видите, должны быть пространственные и не пространственные условия для одного select.

+0

«из 10 компаний в указанном прямоугольнике» - каковы критерии 'топ' для компании? индекс? –

+0

@VasiliySoshnikov Результирующий набор будет иметь сотни результатов. Верните 10-50 ближайших к центру прямоугольника. – Aleksandar

ответ

0

Я думаю, что лучшей стратегией для этого типа индекса было бы сопоставление ваших автомобилей с точками в другом измерении, достаточно далеко друг от друга. Например. если ваш типичный поиск находится в пределах нескольких квадратных километров, убедитесь, что каждый автомобиль «координаты» находится, по крайней мере, в нескольких десятках километров от ближайшего соседа. Затем вы можете использовать наш многомерный индекс RTREE для поиска.

+0

Если бы я хорошо понял: этот подход картографирования автомобилей не подходит, потому что нет никакого способа сделать такое расстояние между ними. Компании (и так автомобили) очень близки друг к другу, максимум в нескольких сотнях метров, но могут быть и десятки метров. Во-вторых, один автомобиль можно арендовать в сотнях компаний, поэтому я не понимаю, как добавить третье измерение к индексу. – Aleksandar

Смежные вопросы