从外部行集中选择的性能

Performance selecting from an External Rowset

我测试了来自外部数据库源的不同类型 select 的性能。

  1. 外部 Datasource_Identifier
  2. 地点csharp_string_literal
  3. 执行csharp_string_literal

我对性能感兴趣,因为只有第 3 种类型 (EXECUTE) 在 WHERE 语句的情况下有效。

我是不是做错了什么,或者 U-SQL 首先从外部 table 读取所有行然后在 ADLA 中过滤它是正常的(与 LOCATION 的行为相同)?

这是一个 problem/ineffective,以防我的 table 非常大,我只需要使用 table 行的一部分。

我可以强制 U-SQL 在从 EXTERNAL table 或 LOCATION 读取数据之前过滤数据吗?问题是我需要基于变量的动态 WHERE 语句。

首先,您可以使用 DATA SOURCE 对象上的 REMOTABLE_TYPES 子句来控制将谓词推送到 SQL 服务器引擎的能力。

那么谓词需要remotable。如果你正在做一个带有 U-SQL 行集 (table) 的连接的谓词,那么有效地远程它可能并不容易(我不确定我们是否将连接映射到半连接然而)。

因为您似乎能够远程使用您在 EXECUTE 中使用的谓词,我认为您很有可能可以在其他情况下以他们可以的方式编写查询被远程。但没有看到查询,很难确定。

如果您想让我们看一下,请通过电子邮件 (usql at microsoft dot com) 与我联系。