Mysql
 sql >> база данни >  >> RDS >> Mysql

Настройка на таблицата за ширина и дължина на MySQL

Трябва да съхранявате точките в една колона с тип данни Point които можете да индексирате с SPATIAL индекс (ако вашият тип таблица е MyISAM ):

CREATE SPATIAL INDEX sx_place_location ON place (location)

SELECT  *
FROM    mytable
WHERE   MBRContains
               (
               LineString
                       (
                       Point($x - $radius, $y - $radius),
                       Point($x + $radius, $y + $radius)
                       )
               location
               )
        AND Distance(Point($x, $y), location) <= $radius

Това драстично ще подобри скоростта на заявки като "намерете всички в даден радиус".

Имайте предвид, че е по-добре да използвате обикновен TM метрични координати (изток и север) вместо полярни (ширина и дължина). За малки радиуси те са достатъчно точни и изчисленията са значително опростени. Ако всичките ви точки са в една полусфера и са далеч от полюсите, можете да използвате един централен меридиан.

Все още можете да използвате полярни координати, разбира се, но формулите за изчисляване на MBR и разстоянието ще бъде по-сложно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql грешка 2005 - Неизвестен хост на MySQL сървър 'localhost'(11001)

  2. Синтактична грешка на SQL

  3. не мога да запиша данни от 1 таблица в друга таблица

  4. SQL QUERY Проблем с подреждането на резултата

  5. Някой е хакнал моята база данни - как?