clickhouse 查询优化_ClickHouse最近点查询优化

本文介绍了三种ClickHouse中优化最近点查询的方法。方案一使用`greatCircleDistance`直接排序并限制结果;方案二引入GeoHash进行预处理,通过MergeTree引擎优化查询;方案三结合GeoHash和分区策略进一步提升查询效率。
摘要由CSDN通过智能技术生成

方案一

select Lon,Lat from pntsnew order by greatCircleDistance(Lon,Lat,-120.419219,34.889755999999998) limit 1

36640623607cf23de75148abc406fe83.png

方案二

CREATE TABLE pntsnew ENGINE = MergeTree() order by (geohash,Lon,Lat) AS select geohashEncode(Lon, Lat,4) geohash, Lon,Lat from pnts

4d97d42aa3a43c76bd1f77e4eccf9514.png

CREATE TABLE geohashP ENGINE = MergeTree() order by (geohash,lon,lat) AS select geohash,tupleElement(geohashDecode(geohash ),1) lon,tupleElement(geohashDecode(geohash ),2) lat from pntsnew group by geohash

2fa372b04c69819d62edf0ba7b99229a.png

select Lon,Lat from pntsnew where geohash in (select geohash from geohashP order by greatCircleDistance(lon,lat ,-120.419219,34.889755999999998) limit 1) order by greatCircleDistance(Lon,Lat ,-120.419219,34.889755999999998) limit 1

c3be7d65c68dc6bf336e5f187b40e184.png

select geoToH3( toFloat64(Lon), toFloat64(Lat),3) geoh3,toFloat64(Lon) Lon, toFloat64(Lat) Lat,id from pnts group by geohash

CREATE TABLE pntsh3 ENGINE = MergeTree() order by (h3,Lon,Lat) AS select geoToH3(Lon, Lat,4) h3, Lon,Lat from pnts

a8cd357534e065b6b21df004f4f660e2.png

方案三

CREATE TABLE pntsnew ENGINE = MergeTree() PARTITION BY (geohash) order by (geohash,Lon,Lat) AS select geohashEncode(Lon, Lat,3) geohash, Lon,Lat from pnts

712bf7bd293723512ffaf7e551717012.png

CREATE TABLE geohashP ENGINE = MergeTree() order by (geohash,lon,lat) AS select geohash,tupleElement(geohashDecode(geohash ),1) lon,tupleElement(geohashDecode(geohash ),2) lat from pntsnew group by geohash

25ecf89af21394c3e95964281e9b4175.png

select Lon,Lat from pntsnew where geohash in (select geohash from geohashP order by greatCircleDistance(lon,lat ,-120.419219,34.889755999999998) limit 1) order by greatCircleDistance(Lon,Lat ,-120.419219,34.889755999999998) limit 1

c6e108ea968f2e278190ac0027ad1f17.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值