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

    SORT

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

    SORT 演算子は、入力されたデータをソートします。

    例:t1 テーブルのデータをソートし、c1 列で降順、c2 列で昇順に並べ替えます。

    obclient> CREATE TABLE t1(c1 INT, c2 INT);
    Query OK, 0 rows affected
    
    obclient> CREATE INDEX i1 ON t1(c1);
    Query OK, 0 rows affected
    
    obclient> EXPLAIN SELECT c1 FROM t1 ORDER BY c1 DESC, c2 ASC;
    
    Query Plan:
    ================================================
    |ID|OPERATOR   |NAME          |EST. ROWS|COST  |
    ------------------------------------------------
    |0 |SORT       |              |100000   |563390|
    |1 | TABLE SCAN|T1(I1,Reverse)|100000   |385811|
    ================================================
    
    Outputs & filters:
    -------------------------------------
      0 - output([T1.C1]), filter(nil), sort_keys([T1.C1, DESC], [T1.C2, ASC]), prefix_pos(1)
      1 - output([T1.C1], [T1.C2]), filter(nil),
          access([T1.C1], [T1.C2]), partitions(p0)
    
    1 row in set
    

    上記の例では、実行計画表示において、0番目の演算子 SORT が t1 テーブルのデータをソートします。実行計画表示の outputs & filters では、SORT 演算子の出力情報を詳細に示しています。

    情報名
    意味
    output この演算子の出力列。
    filter この演算子のフィルター述語。例では SORT 演算子に filter が設定されていないため、nil となります。
    sort_keys([column, DESC],[column, ASC] ...) column 列でソートします。
    • DESC:降順に並べ替えます。
    • ASC:昇順に並べ替えます。
    例えば、sort_keys([t1.c1, DESC],[t1.c2, ASC]) は、ソートキーを c1 列と c2 列と指定し、c1 列は降順、c2 列は昇順で並べ替えることを意味します。
    prefix_pos(n) ソート列の順序付けられた位置です。例えば、sort_keys([t1.c1, DESC], [t1.c2, ASC]),prefix_pos(1) は、t1 テーブルのデータが c1 列で順序付けられており、c2 列のみをソートする必要があることを示します。n は1から始まり、1は sort_keys 内の最初の列を表します。

    ORDER BY ステートメントブロックの後に LIMIT(MySQLモードのみ適用)ステートメントがある場合、オプティマイザーは実行計画をさらに最適化し、TOP-N SORT 演算子を生成します。これは、ヒープソートを使用してトップNのデータを選択する方法です。例:

    obclient> EXPLAIN SELECT * FROM t1 WHERE c1 > 1 ORDER BY c1,c2 LIMIT 10;
    
    Query Plan:
    ========================================
    |ID|OPERATOR    |NAME  |EST. ROWS|COST |
    ----------------------------------------
    |0 |LIMIT       |      |10       |42432|
    |1 | TOP-N SORT |      |10       |42431|
    |2 |  TABLE SCAN|t1(i1)|10000    |41764|
    ========================================
    
    Outputs & filters:
    -------------------------------------
      0 - output([t1.c1], [t1.c2]), filter(nil), limit(10), offset(nil)
      1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10), prefix_pos(1)
      2 - output([t1.c1], [t1.c2]), filter(nil),
          access([t1.c1], [t1.c2]), partitions(p0)
    
    1 row in set
    

    上記の例の実行計画表示では、topn(10) は LIMIT 10 に必要なデータ量を表します。

    前のトピック

    MATERIAL
    最後

    次のトピック

    LIMIT
    次