データソースがフィルタリングをサポートしている場合、フィルタリング基準がデータソースに送信され、CData Virtuality に返されるデータが削減されます。Criteria Pushdownの最も単純な例は、SQLにWHERE句を含めることです。データソースがWHERE句をサポートしていない場合、CData Virtuality はデータセットを取得し、メモリ内で結果をフィルタリングします。
以下の例では、Criteria PushdownをサポートするデータソースとサポートしないデータソースのQuery Plansを対比しています。
Example 1: Pushdown supported
SELECT s.SalesOrderIdFROM "mssql_advworks_2019_2.SalesOrderHeader" sWHERE s.SalesOrderId between 43000 and 43999;;SELECT g_0.SalesOrderID FROM mssql_advworks_2019_2.SalesOrderHeader AS g_0 WHERE (g_0.SalesOrderID >= 43000) AND (g_0.SalesOrderID <= 43999)Example 2: Pushdown NOT supported
SELECT s.SalesOrderIdFROM "no_pushdown.SalesOrderHeader_ALL" sWHERE s.SalesOrderId between 5000 and 5999;;(s.salesorderid <= '5999') AND (s.salesorderid >= '5000')SELECT no_pushdown.SalesOrderHeader_All.salesorderid FROM no_pushdown.SalesOrderHeader_Allデータソースのデフォルト機能は CData Virtuality コネクタ内部で定義されていますが、SupportsInnerJoins、SupportsLikeCriteriaなどのパラメータを使用してオーバーライドすることもできますhere。




