Вопрос о производительности...
У меня есть база данных домов, в которых есть данные геолокации (долгота и широта).
Что я хочу сделать, это найти лучший способ хранения локальных данных в моем MySQL (v5.0.24a) с использованием базы данных InnoDB, чтобы я мог выполнять множество запросов, где я возвращаю все домашние записи которые находятся между x1 и x2 latitude и y1 и y2 longitude.
В настоящее время моя схема базы данных
---------------------
Homes   
---------------------
geolat - Float (10,6)
geolng - Float (10,6)
---------------------
И мой запрос:
SELECT ... 
WHERE geolat BETWEEN x1 AND x2
AND geolng BETWEEN y1 AND y2
- Это то, что я описал выше, лучший способ сохранить данных широты и долготы в MySQL с использованием Float (10,6) и выделения долготы/широты? Если нет, то что? Существуют типы Float, Decimal и даже Spatial в качестве типа данных.
- Это лучший способ выполнить SQL с точки зрения производительности? Если нет, то что?
- Использует ли другой MySQL двигатель базы данных имеет смысл?
ОБНОВЛЕНИЕ: еще без ответа
У меня есть 3 разных ответа ниже. Один человек говорит, чтобы использовать Float. Один человек говорит использовать INT. Один человек говорит использовать Spatial.
Итак, я использовал инструкцию MySQL "EXPLAIN" для измерения скорости выполнения SQL. По-видимому, при использовании INT или Float для типа данных долготы и широты существует абсолютно никакой разницы в выполнении SQL (выбор набора результатов).
Также представляется, что использование оператора < BETWEEN является СУЩЕСТВУЮЩИМ быстрее, чем использование операторов SQL > "или <". Он почти в 3 раза быстрее использовал "BETWEEN", чем использовать инструкцию ">" и "<".
С учетом сказанного я по-прежнему считаю, что влияние производительности будет связано с использованием Spatial, поскольку он неясен для меня, если он поддерживается моей версией MySQL (v5.0.24)... а также как я включаю он, если поддерживается.
Любая помощь будет очень восприимчивой
