从地理位置获取lon / lat与经度和纬度字段的性能差异

时间:2018-05-04 16:04:32

标签: postgresql postgis

什么表现更好?

我有一张包含以下内容的表:

id BIGSERIAL,
geog GEOGRAPHY,
longitude DOUBLE PRECISION,
latitude DOUBLE PRECISION,
area GEOGRAPHY

geogST_MakePoint(longitude, latitude)生成。我可以在需要geogST_X时从ST_Y中提取经度和纬度,但我不知道是否只记录经度和纬度以供重复使用和查询更好性能

geogarea用于计算结果,例如最近,重叠等项目。客户通常只需要过滤项目列表和lon / lat。

运行一些测试后,看起来存储lon / lat的速度稍快一些(对于我的有限数据集)。我跑了几次,结果有利于存储。

存储lon / lat

explain analyze
  select
    longitude,
    latitude
  from location;

-- 'Seq Scan on location  (cost=0.00..3.04 rows=104 width=16) (actual time=0.013..0.032 rows=104 loops=1)'
-- 'Planning time: 0.062 ms'
-- 'Execution time: 0.047 ms'

使用ST_X& ST_Y

explain analyze 
  select
    st_y(geog::geometry),
    st_x(geog::geometry)
  from location;

-- 'Seq Scan on location  (cost=0.00..4.08 rows=104 width=16) (actual time=0.026..0.192 rows=104 loops=1)'
-- 'Planning time: 0.064 ms'
-- 'Execution time: 0.224 ms'

是否有更快的替代ST_X和ST_Y?我认为人们需要从地理类型中获取经度和纬度是相当普遍的。

0 个答案:

没有答案