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 中,且在使用之后即被丢弃。此外,临时表的物理索引是不共享的。

 另请参见

确定哪些逻辑索引共享一个物理索引