OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
    • アイコンOceanBase Cloud
アイコン

OceanBaseデータベース

SQL - V4.4.2

    OceanBase ロゴ

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについてトラストセンター法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBaseデータベース
    3. SQL
    4. V4.4.2
    アイコンOceanBaseデータベース
    SQL - V 4.4.2
    データベース
    • OceanBaseデータベース
    • OceanBase Cloud
    SQL
    KV
    • V 4.4.2
    • V 4.3.5

    EXCEPT/MINUS

    最終更新日:2026-06-15 02:31:32  更新
    シェア
    このページの内容
    MERGE EXCEPT DISTINCT
    HASH EXCEPT DISTINCT

    折りたたみ

    シェア

    EXCEPT 演算子は、左右の子ノードの演算結果セットに対して差集合演算を行い、重複を除去します。

    Oracleモードでは一般的に MINUS を使用して差集合演算を行い、MySQLモードでは一般的に EXCEPT を使用して差集合演算を行います。OceanBaseデータベースのMySQLモードでは EXCEPT と MINUS は区別されず、どちらも差集合演算のキーワードとして使用できます。

    OceanBaseデータベースがサポートする EXCEPT 演算子には MERGE EXCEPT DISTINCT と HASH EXCEPT DISTINCT が含まれます。

    MERGE EXCEPT DISTINCT

    以下の例では、Q1は2つのクエリにMINUSを適用して結合し、c1列にはソート可能な順序があるため、演算子0がMERGE EXCEPT DISTINCTを生成して差集合を求め、重複を除去します。c2列には利用可能なソート順序がないため、演算子3にSORT演算子が割り当てられてソートが実行されます。演算子の実行時には、左右の子ノードから順序付けられた入力を読み取り、その順序付けられた入力を用いてMERGEを行い、重複を除去して差集合の結果を得ます。

    obclient> CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT);
    Query OK, 0 rows affected
    
    obclient> INSERT INTO t1 VALUES(1,1);
    Query OK, 1 rows affected
    
    obclient> INSERT INTO t1 VALUES(2,2);
    Query OK, 1 rows affected
    
    Q1:
    obclient> EXPLAIN SELECT /*+NO_USE_HASH_AGGREGATION*/ c1 FROM t1 MINUS SELECT c2 FROM t1;
    
    Query Plan:
    ==============================================
    |ID|OPERATOR             |NAME|EST. ROWS|COST|
    ----------------------------------------------
    |0 |MERGE EXCEPT DISTINCT|    |2        |77  |
    |1 | TABLE SCAN          |T1  |2        |37  |
    |2 | SORT                |    |2        |39  |
    |3 |  TABLE SCAN         |T1  |2        |37  |
    ==============================================
    Outputs & filters:
    -------------------------------------
      0 - output([MINUS(T1.C1, T1.C2)]), filter(nil)
      1 - output([T1.C1]), filter(nil),
          access([T1.C1]), partitions(p0)
      2 - output([T1.C2]), filter(nil), sort_keys([T1.C2, ASC])
      3 - output([T1.C2]), filter(nil),
          access([T1.C2]), partitions(p0)
    

    上記の例では、実行計画表示のoutputs & filtersにおいて、EXCEPT演算子の出力情報が詳細に示されています。

    情報名
    意味
    output この演算子の出力式です。EXCEPT/MINUS で結合された2つのサブノード演算子の対応する出力(Oracleモードでは MINUS、MySQLモードでは EXCEPT)を表し、差集合演算の出力結果における1列を示します。括弧内は左右のサブノードがこの列に対応する出力列です。
    filter この演算子のフィルター条件です。例では EXCEPT 演算子に filter が設定されていないため、nil となります。

    HASH EXCEPT DISTINCT

    以下の例では、Q2は2つのクエリにMINUSを適用して結合し、ソートを利用できません。演算子0はHASH EXCEPT DISTINCTを使用して差集合を求め、重複を除去します。演算子の実行時には、まず左側のサブノードの出力を読み取ってハッシュテーブルを作成し、重複を除去します。次に、右側のサブノードの出力を読み取り、ハッシュテーブルを利用して差集合を求め、重複を除去します。

    Q2:
    obclient> EXPLAIN SELECT c2 FROM t1 MINUS SELECT c2 FROM t1;
    
    Query Plan:
    =============================================
    |ID|OPERATOR            |NAME|EST. ROWS|COST|
    ---------------------------------------------
    |0 |HASH EXCEPT DISTINCT|    |2        |77  |
    |1 | TABLE SCAN         |T1  |2        |37  |
    |2 | TABLE SCAN         |T1  |2        |37  |
    =============================================
    Outputs & filters:
    -------------------------------------
      0 - output([MINUS(T1.C2, T1.C2)]), filter(nil)
      1 - output([T1.C2]), filter(nil),
          access([T1.C2]), partitions(p0)
      2 - output([T1.C2]), filter(nil),
          access([T1.C2]), partitions(p0)
    

    上記の例の実行計画表示におけるoutputs & filtersは、HASH EXCEPT DISTINCT演算子の出力情報を詳細に示しています。フィールドの意味はMERGE EXCEPT DISTINCT演算子と同じです。

    前のトピック

    INTERSECT
    最後

    次のトピック

    INSERT
    次
    このページの内容
    MERGE EXCEPT DISTINCT
    HASH EXCEPT DISTINCT