加快 django 中的 postgis 查询

Speed up postgis query in django

我有一个平均耗时 550 毫秒的 postgis 查询。

查询如下所示:

pnt = fromstr("POINT(%s %s)" % (lat, lng))
Location.objects.filter(geometry__distance_lte=(pnt, D(mi=2)))

有什么办法可以加快速度吗?这是我可以缓存的东西吗?

是的,你可以加快速度!使用dwithin代替距离,这样查询就可以使用空间索引。

Location.objects.filter(geometry__dwithin=(pnt, D(mi=2)))

数据库列需要有一个 spatial index 才能利用它。