我测试从外部数据库源中选择的不同类型的性能。
- 外部Datasource_Identifier
- 位置 csharp_string_literal
- 执行csharp_string_literal
我对性能感兴趣,因为只有第三种类型(执行(在 WHERE 语句的情况下有效。
我做错了什么,还是 U-SQL 首先从外部表中读取所有行,然后在 ADLA 中过滤它是正常的(LOCATION 的行为相同(?
如果我的表非常大并且我只需要使用部分表行,这是一个问题/无效。
是否可以强制 U-SQL 在从外部表或位置读取数据之前筛选数据?问题是我需要基于变量的动态 WHERE 语句。
首先,使用 DATA SOURCE
对象上的 REMOTABLE_TYPES
子句控制将谓词推送到 SQL Server 引擎的能力。
然后谓词需要是可远程的。如果您正在执行带有 U-SQL 行集(表(连接的谓词,那么有效地远程远程它可能并不容易(我不确定我们是否将联接映射到半连接中(。
由于您似乎能够远程处理您在EXECUTE
中使用的谓词,我认为您很有可能可以在其他情况下以可以远程的方式编写查询。但是没有看到查询,很难确定。
如果您希望我们看一看,请通过电子邮件(usql at microsoft dot com(与我联系。