sql >> データベース >  >> RDS >> Oracle

OracleのIndexOrganizedTableはいつ使用する必要がありますか?または、いつ私はすべきではありませんか?

    基本的に、インデックス編成テーブルは、テーブルのないインデックスです。 USER_TABLESにあるテーブルオブジェクトがありますが、これは基になるインデックスへの参照にすぎません。インデックス構造はテーブルの投影と一致します。したがって、列が主キーと最大で1つの他の列で構成されるテーブルがある場合は、INDEXORGANIZEDの候補が考えられます。

    インデックス編成テーブルの主な使用例は、ほとんどの場合、主キーによってアクセスされるテーブルであり、常にすべての列を取得する必要があります。実際には、インデックスで整理されたテーブルは、参照データ、コード検索業務である可能性が最も高いです。ほとんどの場合、アプリケーションテーブルはヒープで編成されています。

    この構文により、IOTは複数の非キー列を持つことができます。時々これは正しいです。しかし、それはまた、設計上の決定を再考する必要があるかもしれないことを示しています。確かに、非主キー列に追加のインデックスが必要だと考えている場合は、通常のヒープテーブルを使用したほうがよいでしょう。したがって、ほとんどのテーブルにはおそらく追加のインデックスが必要であるため、ほとんどのテーブルはIOTには適していません。

    この回答に戻ると、このスレッドの他のいくつかの回答が、IOTの適切な候補として交差テーブルを提案していることがわかります。交差テーブルには候補キーと一致する射影があるのが一般的であるため、これは合理的と思われます。STUDENTS_CLASSESは(STUDENT_ID、CLASS_ID)だけの射影を持つことができます。

    これは鋳鉄ではないと思います。多くの場合、交差テーブルには技術キー(STUDENT_CLASS_IDなど)があります。キー以外の列も含まれる場合があります(START_DATE、END_DATEなどのメタデータ列が一般的です)。また、一般的なアクセスパスはありません。生徒が受講しているすべてのクラスを検索するのと同じ頻度でクラスを受講しているすべての生徒を検索する必要があるため、両方を同等にサポートするインデックス作成戦略が必要です。交差テーブルはIOTのユースケースではないと言っているわけではありません。自動的にそうではないというだけです。



    1. 更新の前後でフィールドがすべて等しい場合、postgresは実際にページファイルを更新しますか?

    2. このコードでハッキングできますか?

    3. 都市と緯度経度による距離

    4. AzureSQLデータベースの帯域幅に適したクエリプロファイリング