2017-04-06 32 views
1

我測試從外部數據庫源選擇不同類型的性能。從外部行集選擇性能

  1. 外部Datasource_Identifier
  2. 位置csharp_string_literal
  3. EXECUTE csharp_string_literal

我感興趣的性能,因爲只有3型(執行)是有效的WHERE語句的情況。

我做錯了什麼,或者這是正常的,U-SQL首先讀取外部表中的所有行,然後在ADLA中過濾它(LOCATION的行爲)?

這是一個問題/無效的情況下,我的表是非常大的,我只需要使用錶行的一部分。

我可以強制U-SQL在從EXTERNAL表或從LOCATION讀取數據之前過濾數據嗎?問題是我需要基於變量的動態WHERE語句。

回答

2

首先,您控制使用DATA SOURCE對象上的REMOTABLE_TYPES子句將謂詞推送到SQL Server引擎的能力。

然後謂詞需要是遠程的。如果你正在用一個U-SQL行集(表)連接一個謂詞,那麼它可能不容易有效地遠程執行(我不確定是否將一個連接映射到一個半連接)。

由於您似乎能夠遠程使用EXECUTE中的謂詞,因此我認爲您很可能可以使用遠程方式編寫查詢。但是沒有看到這些疑問,很難肯定地說。

如果您想讓我們來看看,請通過電子郵件與我聯繫(microsoft dot com的usql)。