ホームページ >データベース >mysql チュートリアル >Oracle のデータ パーティショニングにおける「PARTITION BY」句と「KEEP」句はどのように異なりますか?

Oracle のデータ パーティショニングにおける「PARTITION BY」句と「KEEP」句はどのように異なりますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-25 05:19:17169ブラウズ

How do `PARTITION BY` and `KEEP` clauses differ in Oracle's data partitioning?

Oracle での KEEP ありとなしの PARTITION BY

Oracle でデータをパーティション分割する場合、PARTITION BY と KEEP という 2 つの主なオプションが使用できます。どちらのオプションもデータをより小さなサブセットにグループ化するために使用できますが、結果のデータに対して異なる影響を及ぼします。

PARTITION BY

PARTITION BY 句は分割に使用されます。 1 つ以上の列に基づいてテーブルを小さなパーティションに分割します。各パーティションのデータは、他のパーティションのデータとは別に保存されます。これにより、特定の列値でデータをフィルタリングするクエリなど、特定の種類のクエリのパフォーマンスが向上します。

たとえば、次のクエリは PARTITION BY 句を使用して、empl テーブルを deptno に基づいてパーティションに分割します。列:

SELECT empno,
       deptno,
       sal,
       MIN(sal) OVER (PARTITION BY deptno) AS "Lowest",
       MAX(sal) OVER (PARTITION BY deptno) AS "Highest"
FROM empl;

このクエリは、各部門の最低給与と最高給与を返します。各部門のデータは個別のパーティションに保存されるため、データを部門ごとにフィルターするクエリのパフォーマンスが向上します。

KEEP

KEEP 句は次の目的で使用されます。各パーティションからどの行を保持するかを指定します。 KEEP 句は、PARTITION BY 句または DISTINCT 句とともに使用できます。

PARTITION BY 句とともに使用する場合、KEEP 句は各パーティションからどの行を保持するかを指定します。たとえば、次のクエリは KEEP 句を使用して各パーティションの最初の行のみを保持します。

SELECT empno,
       deptno,
       sal,
       MIN(sal) OVER (PARTITION BY deptno) AS "Lowest",
       MAX(sal) OVER (PARTITION BY deptno) AS "Highest"
FROM empl
KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno);

このクエリは各部門の最低給与と最高給与を返しますが、最初の行のみが返されます。各パーティションから。これは、限られた数の行を返す必要があるクエリや、特定の順序でデータを返す必要があるクエリに役立ちます。

PARTITION BY と KEEP の違い

PARTITION BY と KEEP の主な違いは、PARTITION BY はデータをより小さなパーティションに分割するのに対し、KEEP はデータを小さなパーティションに分割することです。各パーティションからどの行を保持するかを指定します。 PARTITION BY を使用すると、特定の種類のクエリのパフォーマンスを向上させることができます。一方、KEEP を使用すると、クエリによって返される行数を制限したり、データを特定の順序で返すことができます。

以上がOracle のデータ パーティショニングにおける「PARTITION BY」句と「KEEP」句はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。