st_dwithin 的 Postgresql 要点索引被忽略
Postgresql gist index ignored for st_dwithin
我在具有 postgis 扩展名的 postgresql 12 中有一个点数据库(1000 万)。我在点列上创建了一个要点索引,我需要根据与给定点的距离来过滤点。似乎没有使用索引。我运行下面解释一下:
EXPLAIN
SELECT actual_location
FROM geometries
WHERE ST_DWithin(ST_SetSRID(ST_MakePoint(30,30), 4326), actual_location, 100000, true);
产生:
所以它似乎只进行并行序列扫描。我在这里弄错了吗?我应该使用不同的索引类型吗?当数据库中填充了 100 万个点时,它会在大约 1.3 秒内返回结果。有了 1000 万,它就变成了大约 11-13,这对于我的应用程序的用户来说是不能接受的。
原来我应该像这样创建索引:
CREATE INDEX example_idx ON geometries USING GIST (geography(actual_location));
我在具有 postgis 扩展名的 postgresql 12 中有一个点数据库(1000 万)。我在点列上创建了一个要点索引,我需要根据与给定点的距离来过滤点。似乎没有使用索引。我运行下面解释一下:
EXPLAIN
SELECT actual_location
FROM geometries
WHERE ST_DWithin(ST_SetSRID(ST_MakePoint(30,30), 4326), actual_location, 100000, true);
产生:
所以它似乎只进行并行序列扫描。我在这里弄错了吗?我应该使用不同的索引类型吗?当数据库中填充了 100 万个点时,它会在大约 1.3 秒内返回结果。有了 1000 万,它就变成了大约 11-13,这对于我的应用程序的用户来说是不能接受的。
原来我应该像这样创建索引:
CREATE INDEX example_idx ON geometries USING GIST (geography(actual_location));