我一直在PostGIS最近,在我的查询,如果我用ST_GeomFromText它执行比运行一个子查询来获取GEOM更快。
我想ST_GeomFromText会更昂贵,但每次我得到的结果更快地运行许多测试之后,我的问题是有幕后黑手做任何解释? 因为对我来说,直接在子查询得到GEOM是不是让GEOM为文本,然后加入GeomFromText更好。
谢谢,萨拉
我一直在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(....)
中查询。