ST_GeomFromText 是否比提供直接几何图形更好?

2024-01-10

我最近一直在使用 postgis,在我的查询中,如果我使用 ST_GeomFromText,它的执行速度比运行子查询来获取 geom 更快。

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

谢谢, 莎拉


你的问题是问题不同。 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(....)在你的查询中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ST_GeomFromText 是否比提供直接几何图形更好? 的相关文章

随机推荐