データソースがフィルタリングをサポートしている場合、フィルタリング基準がデータソースに送信され、CData Virtuality に返されるデータが削減されます。Criteria Pushdownの最も単純な例は、SQLにWHERE句を含めることです。データソースがWHERE句をサポートしていない場合、CData Virtuality はデータセットを取得し、メモリ内で結果をフィルタリングします。

以下の例では、Criteria PushdownをサポートするデータソースとサポートしないデータソースのQuery Plansを対比しています。

Example 1: Pushdown supported

SELECT
    s.SalesOrderId
FROM
    "mssql_advworks_2019_2.SalesOrderHeader" s
WHERE
    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.SalesOrderId
FROM
    "no_pushdown.SalesOrderHeader_ALL" s
WHERE
    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 コネクタ内部で定義されていますが、SupportsInnerJoinsSupportsLikeCriteriaなどのパラメータを使用してオーバーライドすることもできますhere