この例では、クエリはGROUP BY
、SUM
:
SELECT
"ProductID"
,
sum
(
"UnitPrice"
)
FROM
"mssql_advworks_2019.AdventureWorks2019.Sales.SalesOrderDetail"
GROUP
BY
"ProductID"
LIMIT 500;;
MS SQLは両方の操作をサポートしているため、クエリ全体がデータソースにプッシュダウンされます。これは、Query Plansを検査することで確認できます。
次の例では、クエリはGROUP BY
、SUM
、ORDER 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 BY
もSUM
も実装していないため、最初のステップはCData Virtualityにすべてのデータを読み込むことです:
ステップ#2では、CData Virtuality がメモリ内でグループ化と集計を実行します:
ステップ#3では、CData Virtuality がクエリのLIMIT 500
: