この例では、クエリはGROUP BYSUM

SELECT
    "ProductID"
    ,sum ("UnitPrice")
FROM
    "mssql_advworks_2019.AdventureWorks2019.Sales.SalesOrderDetail"
GROUP BY
    "ProductID" LIMIT 500;;

MS SQLは両方の操作をサポートしているため、クエリ全体がデータソースにプッシュダウンされます。これは、Query Plansを検査することで確認できます。



次の例では、クエリはGROUP BYSUMORDER BYの同様の操作を実行していますが、これらの操作をネイティブにサポートしていない別のデータソースに対して実行しています:

SELECT
    "salespersonid"
    ,sum(CAST("totaldue" AS float)) AS "totaldue"
FROM
    "no_pushdown_sum.SalesOrderHeader_All"
GROUP BY
    "salespersonid"
ORDER BY
    "salespersonid" LIMIT 500;;

クエリプランを見てみると、大きく異なっていることがわかります:


1の詳細なQuery Plansを以下に示します。データソースはGROUP BYSUMも実装していないため、最初のステップはCData Virtualityにすべてのデータを読み込むことです:


ステップ#2では、CData Virtuality がメモリ内でグループ化と集計を実行します:


ステップ#3では、CData Virtuality がクエリのLIMIT 500