地理位置处理---Redis的GeoHash和MySQL的geography类型(之后有空再详细介绍)

地理位置处理—Redis的GeoHash和MySQL的geography类型(之后有空再详细介绍)

最近比较忙,本来很早就想写对比文章了,这里先大致写写,等之后有空再详细介绍吧。这个文章我本地MD笔记也有,以后再上传到github。

1. MySQL的geography

  • 适合查找某个指定范围内的物体(比如一个多边形内的)
  • 适合需较高精确位置关系的场景。比如传来一个用户坐标,如果需要较精确的定位,来确定用户是否在A区域还是B区域,可以用这个。
  • geography往往伴随着函数计算传入的点Point位置是否在某个区域Polygon内,这个据需要数据库函数。因为走函数等于每一行都需要计算,所以是不走索引的,需要全表查找,效率就很低。设置空间索引Spatial index,可以加速这一过程(具体原理没细究,有兴趣可以自己去查一查)。

​ 前面提到函数操作,不走索引。可以了解下virtual column,虚拟列。

​ 过去把函数操作的值另外存一列,比如插入时间,需要另外存个时间戳版本,可以数据库写个触发器,插入时制动转化然后存到新列里面。但是这样麻烦又低效。可以新建一列,设置为虚拟列,其值是函数计算结果,这样插入数据时虚拟列的值会自动计算,而且由于虚拟列直接存在数据字典而不是持久化到磁盘,效率很高(类似于函数索引了)。</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值