Ich möchte einige geometrische Positionen in meiner MySQL-Datenbank speichern. Dafür verwende ich den Datentyp POINT. Fast überall las ich, dass die Funktion GeomFromText
verwendet werden sollte, um Daten in die Tabelle einzufügen.
Ich fand jedoch heraus, dass das POINT(X,Y)
auch funktioniert. Ich habe keine Beschreibung gefunden, warum statt GeomFromText
verwendet werden sollte POINT
.
Zum Beispiel habe ich die folgende einfache Beziehung:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
Und ich kann Werte mit den folgenden zwei Varianten einfügen:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
Wenn ich die Tabelle ansehe ( SELECT * FROM Site
), sehe ich den gleichen binären Blob für die Position, und wenn ich die Koordinaten ansehe ( SELECT *, AsText(Position) FROM Site
), sehe ich auch die gleichen Werte.
Warum sollte GeomFromText verwendet werden? Gibt es (bekannte) Leistungsunterschiede zwischen diesen beiden Varianten? Wie wird dies in anderen Datenbanksystemen als MySQL gelöst?
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
ist einfacher als...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...