Anzeige - [Hier werben]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
Diskussion

MySQL Geodaten Abfrage – Performance

G.P.
Geschrieben am: Sa 19.05.2012, 19:48
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1383
Mitglied seit: 21.10.2004


Ich habe in meiner Datenbank über eine Millionen Geodaten gespeichert. Für ein kleines Tool ist es wichtig, die Punkte nach ihrer Entfernung vom aktuellen Standort zu ordnen, dafür verwende ich bisher folgende MySQL Abfrage

CODE
ORDER BY SQRT (((longitude-'.$place_now_ longitude.')*( longitude -'.$place_now_ longitude.')+(latitude-'.$place_now_latitude.')*(latitude -'.$place_now_latitude.')))


Da hierbei aber jedes mal alle Einträge verglichen werden müssen, ist dies aus Performancesicht denkbar ungünstig. Hat jemand eine Idee wie ich dieses Problem besser lösen kann?


--------------------
Freiwilligendienst im Ausland
Bundesfreiwilligendienst – Freiwilligendienst in Deutschland
Weltwärts Blog - News für Freiwillige im Ausland
Top
PMEmail Poster
Top
 
 
edvschrat
#2 Geschrieben am: So 20.05.2012, 08:18 (+12:30)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 50
Mitglied seit: 10.07.2010


Moin Moin,

sowas packt man auch in R-Bäume oder M-Bäume.

für die Suchmaschiene:

b-tree, m-tree, geospatial, r-tree
PostgreSQL mit r-tree, r-tree_gist
SQLite r-tree für 2-5 Dimensionen
Geoinfosysteme, Geoinformatik

Wie genau muss das sein? Erdkrümmung berücksichtigen? Eventuell reichen auch schon Entfernungsspalten über die man indexiert.


Viel Spass

edvschrat
Top
PMEmail Poster
Top
 
G.P.
#3 Geschrieben am: So 20.05.2012, 15:11 (+06:52)
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1383
Mitglied seit: 21.10.2004


Danke für die Hinweise, ich wird mich demnächst in die Themen einlesen.

Die Genauigkeit muss nicht besonders hoch sein, die Erdkrümmung kann daher ruhig ignoriert werden.

Wie genau funktionieren denn Entfernungsspalten?

Danke für deine Hilfe


--------------------
Freiwilligendienst im Ausland
Bundesfreiwilligendienst – Freiwilligendienst in Deutschland
Weltwärts Blog - News für Freiwillige im Ausland
Top
PMEmail Poster
Top
 
Sancheck
#4 Geschrieben am: So 20.05.2012, 16:58 (+01:46)
Report PostQuote Post

AyomRank 8
Group Icon 2 Gruppe: VIP Mitglied

Gruppe: VIP Mitglied
Beiträge: 1771
Mitglied seit: 29.03.2008


Du könntest die letzten ziffern entfenren, und dann das in eine tabelle schreiben und darüber einen index setzen


--------------------
Top
PMEmail Poster
Top
 
PH
#5 Geschrieben am: So 20.05.2012, 17:43 (+00:45)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, VIP-Mitglied

Gruppe: Moderator, VIP-Mitglied
Beiträge: 2528
Mitglied seit: 29.08.2004


Die Quadratwurzel ist überflüssig, wenn das Ziel wie beschrieben nur das ordnen ist.

Ausserdem denke ich nicht, dass jedesmal die Million Punkte geordnet werden muss.
Mach doch voher einen Select auf ein Koordinaten-Quadrat und ordne dann das Subset
z.B. wenn du ab dem Punkt sX,sY suchst, mach einen Where X > sX-1 and X < sX+1 and Y > sY-1 and Y < sY+1
Indexiere die Spalten X und Y, und dies sollte die Abfrage massiv beschleunigen


--------------------
Disclaimer: Ich gebe manchmal rechtliche Tips, aber ich bin kein Anwalt, sondern verfüge nur über Erfahrung in diesem Bereich sowie über eine Ausbildung in Wettbewerbsrecht, Handelsrecht, Vertragsrecht, Privatrecht und Markenrecht (jeweils immer auch aus internationaler Perspektive), die Teil meines Studiums war.
Ich gebe rechtliche Tips, weil mich diese Themen interessieren und weil mir dies nach dem Gesetz meines Aufenthaltslandes und dem Schweizer Gesetz gestattet ist. Es ist dem Leser überlassen, was er mit diesen Tips anfängt - ich übernehme keinerlei Haftung für meine Ausführungen.
Top
PMEmail Poster
Top
 
G.P.
#6 Geschrieben am: Fr 25.05.2012, 07:39 (+4d 13:55)
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1383
Mitglied seit: 21.10.2004


Danke für das viele Feedback


--------------------
Freiwilligendienst im Ausland
Bundesfreiwilligendienst – Freiwilligendienst in Deutschland
Weltwärts Blog - News für Freiwillige im Ausland
Top
PMEmail Poster
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
String an MySQl-Tabelle anhängen Tom G 247 2 Mo 13.05.2013, 06:47
Suche mysql Profi RickiMales 328 0 Do 18.04.2013, 18:26
Hilfe bei SQL-Abfrage benötigt Tom G 432 2 Mo 8.04.2013, 20:07
mysql LOCKED verhindern in PHP Sancheck 272 1 Mo 25.03.2013, 10:49
MySQL Update milkboy 300 4 So 24.03.2013, 22:19
mySQL JOIN über 600.000 Daten UBerer 403 3 Do 21.03.2013, 18:16
Browser direkte Abfrage auf Server Piero50 297 4 Fr 8.03.2013, 13:28
Dateidownload, readfile() & Performance cd_brenner 314 2 Di 12.02.2013, 07:58
Mysql Abfrage webdoktor 445 3 Fr 4.01.2013, 13:28



Neu:  Kleinanzeige pinnen  |  Kleinanzeige auf Startseite  |  Werbetarife 2013  |  VIP Mitgliedschaft (30 Tage Geld-zurück-Garantie)



Anzeigen

Textlinks kaufen oder anbieten





[Hier werben]