mysql经度纬度类型_在MySQL数据库中存储纬度/经度时使用的理想数据类型是什么?...

Gajus..

41

取决于您需要的精度.

Datatype Bytes resolution

------------------ ----- --------------------------------

Deg*100 (SMALLINT) 4 1570 m 1.0 mi Cities

DECIMAL(4,2)/(5,2) 5 1570 m 1.0 mi Cities

SMALLINT scaled 4 682 m 0.4 mi Cities

Deg*10000 (MEDIUMINT) 6 16 m 52 ft Houses/Businesses

DECIMAL(6,4)/(7,4) 7 16 m 52 ft Houses/Businesses

MEDIUMINT scaled 6 2.7 m 8.8 ft

FLOAT 8 1.7 m 5.6 ft

DECIMAL(8,6)/(9,6) 9 16cm 1/2 ft Friends in a mall

Deg*10000000 (INT) 8 16mm 5/8 in Marbles

DOUBLE 16 3.5nm ... Fleas on a dog

总结一下:

最精确的选择是DOUBLE.

最常见的类型是DECIMAL(8,6)/(9,6).

从MySQL 5.7开始,考虑使用空间数据类型(SDT),专门POINT用于存储单个坐标.在5.7之前,SDT不支持索引(当表类型为MyISAM时,5.6除外).

注意:

使用POINTclass时,存储坐标的参数顺序必须是POINT(latitude, longitude).

有一种用于创建空间索引的特殊语法.

使用SDT的最大好处是您可以访问空间分析功能,例如计算两点之间的距离(ST_Distance)并确定一个点是否包含在另一个区域内(ST_Contains).

对狗的精确跳蚤的upvote! (3认同)

你复制上一个答案的粘贴部分,并用创建该表**的人**推荐的东西"总结"**:«如何分区?好吧,MySQL非常挑剔.所以FLOAT/DOUBLE出局了.DECIMAL已经结束了.所以,我们坚持一些kludge.基本上,我们需要将Lat/Lng转换为某个大小的INT并使用PARTITION BY RANGE.»和«FLOAT有24个有效位; DOUBLE有53.(它们不适用于PARTITIONing但是为了完整而包括在内.**通常人们使用DOUBLE而没有意识到它是多大的**,以及需要多少空间.)»只需离开SDT部分你中写道. (2认同)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值