Performance ST_DWithin使查询速度变慢(>;1000ms)
我有一个包含200条记录的表(natomr),它定义了不同的区域。我想找出包含任意点的区域。这是我的SQL:Performance ST_DWithin使查询速度变慢(>;1000ms),performance,postgis,Performance,Postgis,我有一个包含200条记录的表(natomr),它定义了不同的区域。我想找出包含任意点的区域。这是我的SQL: SELECT * FROM natomr WHERE ST_DWithin(the_geom4326, ST_geomfromtext('POINT(13.614807 59.684035)', 4326)::geography, 1) 这个查询大约需要1200毫秒,我认为对于这样小的表来说,这个查询太长了 我已经为_geom4326创建了一个索引,如下所示: CREATE IN
SELECT *
FROM natomr
WHERE ST_DWithin(the_geom4326,
ST_geomfromtext('POINT(13.614807 59.684035)', 4326)::geography, 1)
这个查询大约需要1200毫秒,我认为对于这样小的表来说,这个查询太长了
我已经为_geom4326创建了一个索引,如下所示:
CREATE INDEX natomr_the_geom4326_gist
ON natomr
USING gist
(the_geom4326 );
我还运行了真空完全命令,但没有任何效果
我应该怎么做才能加快查询速度?很难判断这是否出乎意料,从您这里的情况来看……可能需要1200毫秒
- 自动真空防止数据包裹…不应该对这么小的表产生速度影响
- 表太小,索引无法真正发挥作用
形状文件中的多边形有多大?作为一个有趣的测试,请尝试定义一个5点多边形,并尝试执行查询以在该多边形中找到一个点。现在定义一个2000点多边形并尝试相同的测试。如果这里的200个多边形等于或大于2000个点,则1200MS听起来并不太不合理,这取决于您的机器的功率。很难判断这是否出乎意料,因为这里的情况可能是1200MS
- 自动真空防止数据包裹…不应该对这么小的表产生速度影响
- 表太小,索引无法真正发挥作用
形状文件中的多边形有多大?作为一个有趣的测试,请尝试定义一个5点多边形,并尝试执行查询以在该多边形中找到一个点。现在定义一个2000点多边形并尝试相同的测试。如果此处的200个多边形等于或大于2000个点,则1200MS听起来并不太不合理,这取决于您的机器的功率。原来是::geography函数减慢了速度。当我删除它花了17毫秒@luttkens那么如果你选择地理?然后呢?我需要做什么?结果是::geography函数减慢了速度。当我删除它花了17毫秒@luttkens那么如果你选择地理?然后呢?我需要做什么?