ST_GeomFromText比提供直接几何更好吗?

时间:2012-04-10 10:03:12

标签: postgresql postgis

我最近一直在使用postgis,在我的查询中,如果我使用ST_GeomFromText,它执行的速度比运行子查询要快得多。

我认为ST_GeomFromText会更贵,但每次运行很多测试后我都会更快地得到结果,我的问题是否有任何解释? 因为对我来说,直接在子查询中获取geom比将geom作为文本然后添加为GeomFromText更好。

谢谢, 萨拉

1 个答案:

答案 0 :(得分:1)

您的问题是问题不同。 ST_GeomFromText将是一个不可变函数,因此输出仅取决于输入。这意味着规划器可以在查询开始时执行一次。运行子查询意味着你必须查找几何,这意味着磁盘访问等。首先,你有一点CPU活动,为查询执行一次,第二次你有磁盘查找。

所以答案在某种程度上取决于你在做什么。通常,您可以假设优化器将处理输入类型转换等内容,这些转换不依赖于设置。

以这种方式思考。

SELECT * FROM mytable WHERE my_geom = ST_GeomFromText(....);

这会转换为类似下面的伪代码:

 private_geom = ST_GeomFromText(....);
 SELECT * FROM mytable WHERE my_geom = private_geom;

然后计划并执行该查询。

显然,您不想添加往返只是为了避免查询查询,但是如果您知道几何图形,则可以在查询中通过ST_GeomFromText(....)指定它。

相关问题