デフォルトでは、Oracleのすべての索引はクラスター化されていません。 Oracleのクラスター化インデックスは、Index-Organized Tables(IOT)の主キーインデックスのみです。
IOT_TYPE
を確認することで、テーブルがIOTであるかどうかを判断できます。 ALL_TABLES
の列 ビュー(その主キーは、ALL_CONSTRAINTS
を照会することで判別できます。 およびALL_CONS_COLUMNS
ビュー)。
クエリが順序付けられた行を返す理由は次のとおりです。
- テーブルはインデックスで構成されており、
FIELD
主キーの主要部分です。 - テーブルはヒープ構成されていますが、行は偶然に
FIELD
順に並べられています。 、これは、増加するID列で発生することがあります。
ケース2は、ソートされた行を偶然にのみ返します。挿入の順序は保証されていません。さらに、将来使用可能なスペースがある場合、Oracleは古いブロックを自由に再利用でき、壊れやすい順序を混乱させます。
ケース1はほとんどの場合、順序付けられた行を返しますが、返される行の順序は、将来変更される可能性のあるアクセスパスのアルゴリズムに依存するため(またはDBパラメーター、特に並列処理を変更した場合)、これに依存しないでください。 。
どちらの場合も、順序付けられた行が必要な場合は、ORDERBY句を指定する必要があります。
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;