MySQL veritabanımda bazı geometrik pozisyonları saklamak istiyorum. Bunun için POINT veri tipini kullanıyorum. Hemen hemen her yerde fonksiyonun GeomFromText
tabloya veri eklemek için kullanılması gerektiğini okudum .
Ancak, bunun POINT(X,Y)
da işe yaradığını öğrendim . Bunun GeomFromText
yerine neden kullanılması gerektiğine dair bir açıklama bulamadım POINT
.
Örneğin ben aşağıdaki basit bir ilişki var:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
Ve aşağıdaki iki varyantı kullanarak değerler ekleyebilirim:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
Tabloya ( SELECT * FROM Site
) baktığımda konum için aynı ikili blob görüyorum ve koordinatları ( SELECT *, AsText(Position) FROM Site
) gördüğümde de aynı değerleri görüyorum.
Peki GeomFromText neden kullanılmalı? Bu iki değişken arasında (bilinen) performans farklılıkları var mı? Bu MySQL dışındaki diğer veritabanı sistemlerinde nasıl çözülür?
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
daha basit...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...