Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance ST_DWithin使查询速度变慢(>;1000ms)_Performance_Postgis - Fatal编程技术网

Performance ST_DWithin使查询速度变慢(>;1000ms)

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

我有一个包含200条记录的表(natomr),它定义了不同的区域。我想找出包含任意点的区域。这是我的SQL:

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毫秒

  • 自动真空防止数据包裹…不应该对这么小的表产生速度影响
  • 表太小,索引无法真正发挥作用
一些潜力:

st_dwithin有一定的开销…它由另外两个函数的3个调用组成,这两个函数完全是contrib库文件(在C中)。因此,您的运行时间看起来像是开销+每个处理记录x秒。尝试将数据放大一点…在一次查询中尝试10个点。这将使您更好地了解与st_dwithin相关的开销


形状文件中的多边形有多大?作为一个有趣的测试,请尝试定义一个5点多边形,并尝试执行查询以在该多边形中找到一个点。现在定义一个2000点多边形并尝试相同的测试。如果这里的200个多边形等于或大于2000个点,则1200MS听起来并不太不合理,这取决于您的机器的功率。

很难判断这是否出乎意料,因为这里的情况可能是1200MS

  • 自动真空防止数据包裹…不应该对这么小的表产生速度影响
  • 表太小,索引无法真正发挥作用
一些潜力:

st_dwithin有一定的开销…它由另外两个函数的3个调用组成,这两个函数完全是contrib库文件(在C中)。因此,您的运行时间看起来像是开销+每个处理记录x秒。尝试将数据放大一点…在一次查询中尝试10个点。这将使您更好地了解与st_dwithin相关的开销


形状文件中的多边形有多大?作为一个有趣的测试,请尝试定义一个5点多边形,并尝试执行查询以在该多边形中找到一个点。现在定义一个2000点多边形并尝试相同的测试。如果此处的200个多边形等于或大于2000个点,则1200MS听起来并不太不合理,这取决于您的机器的功率。

原来是::geography函数减慢了速度。当我删除它花了17毫秒@luttkens那么如果你选择地理?然后呢?我需要做什么?结果是::geography函数减慢了速度。当我删除它花了17毫秒@luttkens那么如果你选择地理?然后呢?我需要做什么?