ฉันต้องการจัดเก็บตำแหน่งทางเรขาคณิตบางอย่างในฐานข้อมูล MySQL ของฉัน สำหรับสิ่งนี้ฉันใช้ประเภทข้อมูล POINT เกือบทุกที่ฉันอ่านว่าGeomFromText
ควรใช้ฟังก์ชั่นเพื่อแทรกข้อมูลลงในตาราง
อย่างไรก็ตามฉันพบว่าPOINT(X,Y)
ยังใช้งานได้ ฉันไม่พบคำอธิบายว่าทำไมควรจะนำมาใช้แทนGeomFromText
POINT
ตัวอย่างเช่นฉันมีความสัมพันธ์แบบง่าย ๆ ดังต่อไปนี้:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
และฉันสามารถแทรกค่าโดยใช้สองตัวแปรต่อไปนี้:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
เมื่อฉันดูตาราง ( SELECT * FROM Site
) ฉันเห็นหยดเลขฐานสองเดียวกันสำหรับตำแหน่งและเมื่อฉันดูพิกัด ( SELECT *, AsText(Position) FROM Site
) ฉันก็เห็นค่าเดียวกัน
เหตุใดจึงควรใช้ GeomFromText มีความแตกต่างของประสิทธิภาพ (รู้จักกัน) ระหว่างสองรุ่นนี้หรือไม่? วิธีนี้แก้ไขได้ในระบบฐานข้อมูลอื่นที่ไม่ใช่ MySQL
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
ง่ายกว่า...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...