応用情報暗記無料で始める

ORDER BY句とDISTINCTとは?おーだーばいくとでぃすてぃんくと

ORDER BYは結果行の並び順を、DISTINCTは結果からの重複行の除去を指定する。DISTINCTの重複判定はSELECTした列の組合せ全体で行われる。どちらも実行時にはソートかハッシュによる突合を伴うため、行数が増えるほど作業領域と時間を消費し、索引の有無が実行計画を左右する。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では5回出題され、ほかに1問の解説で触れられています(2017年度〜2024年度)。

応用情報技術者試験の頻出用語/テクノロジ系

別名:ORDER BY句、DISTINCT、ORDER BYとDISTINCT、ORDER BY

この語が出る過去問を解く →

背景

リレーショナルモデルでは表は行の集合であり、集合には順序が無い。だからSQLは並び順を保証せず、必要なら明示せよという設計になっている。一方で実際のSQLの表は重複行を許すマルチ集合なので、集合として扱いたい場面のために重複除去の指定が別に用意された。どちらも「モデルと実装の食い違いを利用者が埋める」ための句だと捉えると、なぜ書かないと保証されないのかが説明できる。

具体例

PostgreSQLでEXPLAIN ANALYZEを取ると、ORDER BYはSortノードとして現れ、対象が作業メモリ(work_mem)に収まらなければ外部ソートとしてディスクへ書き出す様子まで見える。並び順どおりの索引があればSortノード自体が消え、Index Scanで済む。DISTINCTはHashAggregateかSort+Uniqueとして現れ、同じ結果でも行数と作業メモリ次第で計画が入れ替わる。

試験での引っ掛け

DISTINCTは指定した1列ではなく選択列の組合せ全体で重複を見るため、列を1つ足しただけで重複が消えなくなる。GROUP BYと結果が同じに見えても、集約関数を伴う集計とは目的が違う。ORDER BYを書かなければ同じ問合せでも実行のたびに並びが変わり得る点、ORDER BYは論理的に最後に評価されるためSELECTで付けた別名が使える点も出題される。

関連用語

出た過去問

問題文で直接問われたものと、解説の中で触れられたものが含まれます。

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では5回出題(2017年度〜2024年度)
  • 分野:テクノロジ系
  • DISTINCTは指定した1列ではなく選択列の組合せ全体で重複を見るため、列を1つ足しただけで重複が消えなくなる。