Snowflake中单点执行ST_TRANSFORM()为何耗时过长?
米级半径地理点转圆形缓冲效率异常问题
- 需求:将带米级半径的地理点转换为圆形区域,用于查询其他点是否落在该范围内,但当前转换操作耗时极久
- 操作流程:以英国经纬度点(-0.144407, 51.489420)为例,执行以下步骤:
- 通过
ST_TRANSFORM将点从WGS84(4326)坐标系转换为英国国家格网(27700)米制坐标系 - 用
ST_BUFFER做10米缓冲生成圆形 - 再次通过
ST_TRANSFORM转回4326坐标系
- 通过
- 异常情况:该查询运行约5分钟后被终止,本地计算可快速完成,推测操作存在问题;其他查询正常,排除数据库整体性能问题
- 当前替代方案:采用两两计算距离的方式实现需求,但认为该方式效率远低于使用
ST_CONTAINS的空间查询
执行代码
select st_makegeompoint(-0.144407, 51.489420) as pt , st_transform( st_buffer( st_transform( pt, 4326, 27700) , 10) , 27700, 4326) as circle
内容的提问来源于stack exchange,提问作者isaac_r
相关产品推荐
相关产品推荐

