Angenommen, ich möchte 20 nächstgelegene Unternehmen in meiner Nähe finden.
My table structure is like this:
BusinessID varchar(250) utf8_unicode_ci No None Browse distinct values Change Drop Primary Unique Index Fulltext
Prominent double No None Browse distinct values Change Drop Primary Unique Index Fulltext
LatLong point No None Browse distinct values Change Drop Primary Unique Index Fulltext
FullTextSearch varchar(600) utf8_bin No None Browse distinct values Change Drop Primary Unique Index Fulltext
With selected: Check All / Uncheck All With selected:
Print viewPrint view Propose table structurePropose table structureDocumentation
Add new fieldAdd field(s) At End of Table At Beginning of Table After
Indexes: Documentation
Action Keyname Type Unique Packed Field Cardinality Collation Null Comment
Edit Drop PRIMARY BTREE Yes No BusinessID 1611454 A
Edit Drop Prominent BTREE No No Prominent 0 A
Edit Drop LatLong BTREE No No LatLong (25) 0 A
Edit Drop sx_mytable_coords SPATIAL No No LatLong (32) 0 A
Edit Drop FullTextSearch FULLTEXT No No FullTextSearch 0
Es gibt 1,6 Millionen Geschäfte. Natürlich ist es dumm, die Entfernung für alle zu berechnen und sie dann zu sortieren.
Hier setzt der georäumliche Index an, oder?
Welchen SQL-Befehl muss ich also umsetzen?
Hinweis:
- Ich verwende MySQL Myisam räumlichen Index. Dies habe ich jedoch vorher nicht angegeben. Also werde ich diejenigen akzeptieren, die darauf antworten, um meine Wertschätzung zu zeigen und eine andere Frage zu stellen.
- Ich möchte nicht die Entfernung für die gesamte Tabelle berechnen
- Ich möchte keine Entfernung für eine Region berechnen, die noch ineffizient ist
- Ich möchte die Entfernung für eine angemessene Anzahl von Punkten berechnen, da ich die Punkte nach Entfernung sortieren und die Punkte 1-20, 21-40, 41-60 usw. anzeigen möchte.