在根据一组传入的特性从数据库中选择行时,寻找提高性能的提示。
例如,假设我有150点进入FeatureReader上的启动器端口,然后从OracleSDE数据库读取4个表/功能。
场景1:空间过滤器设置为“启动器相交结果”
虽然这大大提高了读取所有4个表/功能的性能,我还能做些什么来提高性能呢?
有没有一种方法可以同时发送所有功能?或者生成一组搜索信封发送给FeatureReader?
(我尝试创建一个边界盒累加器,但如果这两个点不接近,这将选择4个功能中的太多)
下面是日志文件中发送给FeatureReader的150个点的输出类型示例(注意,我已经更改了lat/long):
注意-在“geodatabase”读卡器上执行信封查询,后滤波空间谓词在FME中的应用
2018-08-02 16:17:18 56.1 0.0通知最小(x,y)和最大(x,y)界限,分别使用的搜索信封有:(-50.0001,10)(-50.000)10)
场景2:使用唯一ID选择
在这种情况下,150个点中的每个点在4个要选择的功能中都有一个匹配的唯一ID。
是否有人有一种聪明的方法来构建长的SQL查询,以便同时预取具有匹配唯一ID的所有功能?
我正在使用FME工作台2017.1。
我有一个读卡器连接,从中读取多个功能(表)。其中一个特性(例如,让我们称之为用户)使用select语句选项来获取附加信息(我可以运行并测试select,它是有效的,而且有效)。在FME使用该SELECT语句“获取特征类型的特征”之前,我将在日志输出中收到一系列警告消息,如下所示:
警告Oracle Reader:在功能类型上指定了列“id”,但该列在表“schema_name.users”中不存在,将被忽略。
这将发生在用户的所有列中。我可以验证源表中是否存在列。
即使有这些警告,用户的记录将被读写到新的目的地。然而,在用户登录后需要读/写的所有其他功能类型(例如,最喜欢的,朋友,无论怎样),它们的每一列都会给出相同的警告消息,并且不会向新的目的地写入任何内容。
一旦我从用户中删除select语句,一切正常:没有警告信息,所有的特性类型(表)都会被读取和写入。
有人知道发生了什么事吗?问题似乎与select语句有关。即使我将它从一个稍微复杂的连接更改为“从用户中选择*”,也会发生同样的行为。
任何帮助都将不胜感激。
更新:输入select语句后,FME将忽略特征类型的最初检索属性,并尝试使用SELECT语句。那很好。但是该读卡器连接的所有其他特性类型现在都假定有一个select语句,因为他们没有,它们在工作区中被忽略。