Tôi muốn lưu trữ một số vị trí hình học trong cơ sở dữ liệu MySQL của tôi. Đối với điều này, tôi sử dụng kiểu dữ liệu POINT. Hầu như ở mọi nơi tôi đọc rằng hàm GeomFromText
này nên được sử dụng để chèn dữ liệu vào bảng.
Tuy nhiên, tôi phát hiện ra rằng POINT(X,Y)
cũng hoạt động. Tôi đã không tìm thấy bất kỳ mô tả tại sao GeomFromText
nên được sử dụng thay vì POINT
.
Ví dụ tôi có quan hệ đơn giản sau:
CREATE TABLE Site (
SiteID BIGINT UNSIGNED,
Position POINT
);
Và tôi có thể chèn giá trị bằng hai biến thể sau:
INSERT INTO Site (
1,
GeomFromText( 'POINT(48.19976 16.45572)' )
);
INSERT INTO Site (
2,
POINT(48.19976, 16.45572)
);
Khi tôi xem bảng ( SELECT * FROM Site
) tôi thấy cùng một đốm nhị phân cho vị trí và khi tôi xem tọa độ ( SELECT *, AsText(Position) FROM Site
) tôi cũng thấy các giá trị tương tự.
Vậy tại sao GeomFromText nên được sử dụng? Có sự khác biệt nào về hiệu suất (đã biết) giữa hai biến thể này không? Làm thế nào điều này được giải quyết trong các hệ thống cơ sở dữ liệu khác ngoài MySQL?
INSERT INTO Site (Position) SELECT POINT(latitude, longitude) FROM tmp
đơn giản hơn...SELECT GeomFromText(CONCAT('POINT(',latitude,' ',longitude,')' )) ...