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

SQL заявка за извършване на търсене в радиус въз основа на географска ширина и дължина

Според мен клаузата WHERE ще бъде бавна поради включената математика и използването на функции в клаузата WHERE ще попречи на базата данни да използва индекс за ускоряване на заявката - така че на практика ще прегледате всеки ресторант в база данни и извършвайте математиката с големия кръг на всеки ред всеки път, когато правите заявка.

Лично аз бих изчислил координатите TopLeft и BottomRight на квадрат (който трябва само грубо да се изчисли с помощта на Питагор) със страни, равни на диапазона, който търсите, и след това бих изпълнил по-сложния тест WHERE на по-малкото подмножество от записи, които са в рамките на този квадрат Lat/Long.

С индекс на Lat &Long в базата данни заявката

WHERE     MyLat >= @MinLat AND MyLat <= @MaxLat
      AND MyLong >= @MinLong AND MyLong <= @MaxLong

трябва да бъде много ефективен

(Моля, имайте предвид, че нямам познания конкретно за MySQL, само за MS SQL)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY за непрекъснати редове в SQL

  2. Има ли MySQL команда, която да имплементира нещо като drop tables освен t1,b2?

  3. Изчислете децил от честотата в MySQL

  4. Нулирайте MySQL root паролата с помощта на оператор ALTER USER след инсталиране на Mac

  5. MySQL вмъкнете там, където не съществува / ако не съществува