クエリのパーティショニング: PARTITION BY と GROUP BY について
データ集計の領域では、データベース クエリは多くの場合 GROUP BY 句に依存します。データを操作および集約するため。最近、代替手法である PARTITION BY が、最適化されたクエリ パフォーマンスを求める開発者の注目を集めています。しかし、これら 2 つの句はどのように異なるのでしょうか?
PARTITION BY は、GROUP BY とは異なり、ROW_NUMBER() などのウィンドウ関数のコンテキスト内で動作します。その主な目的は、特定の基準に基づいてデータをサブセットに分割し、データのセットをスライドするウィンドウと同じように、各サブセット内の値の計算を可能にすることです。
一方、GROUP BY は次の内容を変更します。クエリ全体を処理し、同様の値を持つ行全体のデータを集計できるようにします。返される行を統合し、平均や合計などの集計値を計算することで、返される行の数を減らします。
違いを説明するために、次の例を考えてみましょう。
GROUP BY の使用:
SELECT customerId, COUNT(*) AS orderCount FROM Orders GROUP BY customerId;
このクエリは注文を顧客 ID ごとにグループ化し、それぞれの注文数をカウントします。
PARTITION BY の使用:
SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId) AS OrderNumberForThisCustomer FROM Orders;
このクエリは、各顧客パーティション内の各注文の注文番号を計算します。顧客ごとの注文のランキング。返される行の数には影響しません。
要約すると、PARTITION BY と GROUP BY は両方とも異なる目的を果たしますが、データ操作と集計という共通の目標を共有します。 GROUP BY はクエリに対してグローバルに動作し、返される行数を減らしますが、PARTITION BY はウィンドウ関数の範囲内で動作し、行数を変更しません。これらの句の違いを理解することで、開発者はクエリを特定のデータ操作に合わせて調整し、クエリのパフォーマンスを向上させることができます。
以上がPARTITION BY と GROUP BY: SQL クエリの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。