Eu gostaria de armazenar algumas posições geométricas no meu banco de dados MySQL. Para isso, eu uso o tipo de dados POINT. Em quase todos os lugares, li que a função GeomFromText
deve ser usada para inserir dados na tabela.
No entanto, descobri que POINT(X,Y)
também funciona. Não encontrei nenhuma descrição do porquê GeomFromText
usar em vez de POINT
.
Por exemplo, tenho a seguinte relação simples:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
E posso inserir valores usando as duas seguintes variantes:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
Quando visualizo a tabela ( SELECT * FROM Site
), vejo o mesmo blob binário do local e, quando visualizo as coordenadas ( SELECT *, AsText(Position) FROM Site
), também vejo os mesmos valores.
Então, por que o GeomFromText deve ser usado? Existem diferenças de desempenho (conhecidas) entre essas duas variantes? Como isso é resolvido em outros sistemas de banco de dados que não o MySQL?
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
É mais simples que...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...