Reputation: 436
I'm designing a table in mysql that will store a list of users and a Google Maps co-ordinate (longitude & latitude).
Will I need two fields, or can it be done with 1?
I don't know what I use? what I use float or decimal or GEOMETRY or there is new data type? what are the pros and cons of the best data type to choose it?
Upvotes: 8
Views: 5215
Reputation: 1585
You can use spatial extensions in mysql the datatype is POINT
It will be faster in search , and many features for geographic operation.
Upvotes: 5
Reputation: 24815
A proper way, and fast, is described on this blog:
http://www.rooftopsolutions.nl/blog/229
CREATE TABLE geo (
longitude DOUBLE,
latitude DOUBLE,
idxlong SMALLINT,
idxlat SMALLINT,
INDEX (idxlong,idxlat);
);
Part 2 contains a benchmark: http://www.rooftopsolutions.nl/blog/230
method small medium large
plain select 1.73s
index on latitude 0.72s
using point field 9.52s
using point field + spatial index 0.00s 0.73s 18.82s
using morton number 0.78s
index on morton 0.00s 0.65s 3.23s
Also a part 3 with in practice: http://www.rooftopsolutions.nl/blog/231
Upvotes: 3
Reputation: 272086
You can use:
DECIMAL(11, 8)
(3 digits before and 8 digits after decimal)FLOAT
Note that a decimal column can store an exact value, where as a float column stores an approximation of the value. For example 1.999999
will be stored as 1.999999
in the decimal column but as 2.0
in the float column.
Upvotes: 2