データソースがフィルタリングをサポートしている場合、フィルタリング基準がデータソースに送信され、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 コネクタ内部で定義されていますが、SupportsInnerJoins
、SupportsLikeCriteria
などのパラメータを使用してオーバーライドすることもできますhere。