Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » テーブル、ビュー、インデックス » インデックス

 

高度:論理インデックスと物理インデックス

SQL Anywhere は物理インデックスと論理インデックスを使用します。物理インデックスは、インデックスがディスクに保存されるときの実際のインデックス構造です。論理インデックスは、物理インデックスへの参照です。プライマリキー、セカンダリキー、外部キー、一意性制約を作成するときに、データベースサーバーは、制約の論理インデックスを作成することで参照整合性を確保します。次に、データベースサーバーは制約を満たすインデックスがすでに存在するかどうかを確認します。条件を満たす物理インデックスがすでに存在する場合、データベースサーバーはその物理インデックスへの論理インデックスを指します。そのような物理インデックスが存在しない場合、データベースサーバーは新しい物理インデックスを作成してから、その物理インデックスへの論理インデックスを指します。

物理インデックスが論理インデックスの要件を満たすには、カラムとカラムの順序、および各カラムのデータの順序 (昇順や降順) が同一である必要があります。

データベース内のすべての論理インデックスと物理インデックスの情報は、それぞれ ISYSIDX システムテーブルと ISYSPHYSIDX システムテーブルに記録されます。論理インデックスを作成すると、そのインデックス定義を保持するためにエントリが ISYSIDX システムテーブルに作成されます。論理インデックスを満たすために使用される物理インデックスへの参照は、ISYSIDX.phys_id カラムに記録されます。物理インデックスは ISYSPHYSIDX システムテーブルに定義されます。

複数の論理インデックスは単一の物理インデックスを指すことができるため、論理インデックスを使用するということは、データベースサーバーは重複した物理インデックスを作成して管理する必要がないということを意味します。

論理インデックスを削除すると、その定義が ISYSIDX システムテーブルから削除されます。それが特定の物理インデックスを参照する唯一の論理インデックスである場合は、その物理インデックスと、ISYSPHYSIDX システムテーブル内の対応するエントリも削除されます。

リモートテーブルに対して物理インデックスは作成されません。テンポラリテーブルの場合、物理インデックスは作成されますが、ISYSPHYSIDX に記録されず、使用後に廃棄されます。また、テンポラリテーブルの物理インデックスは共有されません。

 参照

物理インデックスを共有する論理インデックスの特定