Me gustaría almacenar algunas posiciones geométricas en mi base de datos MySQL. Para esto utilizo el tipo de datos POINT. Casi en todas partes leí que la función GeomFromText
debería usarse para insertar datos en la tabla.
Sin embargo, descubrí que POINT(X,Y)
también funciona. No encontré ninguna descripción de por qué GeomFromText
debería usarse en lugar de POINT
.
Por ejemplo, tengo la siguiente relación simple:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
Y puedo insertar valores usando las siguientes dos variantes:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
Cuando veo la tabla ( SELECT * FROM Site
) veo el mismo blob binario para la ubicación, y cuando veo las coordenadas ( SELECT *, AsText(Position) FROM Site
) también veo los mismos valores.
Entonces, ¿por qué se debe usar GeomFromText? ¿Existen diferencias de rendimiento (conocidas) entre estas dos variantes? ¿Cómo se resuelve esto en otros sistemas de bases de datos que MySQL?
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
es más simple que...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...