创建 SYSATTRIBUTE 和 SYSATTRIBUTENAME 是为了将有关数据库对象的新信息添加到系统表,而不用更改模式。
SYSATTRIBUTE 的每一行都描述一个系统对象,例如特定的表或索引。指定属性时会添加行;例如,每个具有表页可用百分比设置的表都添加到 SYSATTRIBUTE。与此类似,仅当索引深度增加到 2 时,SYSATTRIBUTE 中才会出现一个索引深度行。
当索引被更新时,所有索引(包括目录表上的索引)的统计信息都会得到维护。VALIDATE 语句会校验指定索引的统计信息的准确性,并在其不准确时生成错误消息。这可以为优化程序提供准确的统计信息,而几乎没有任何性能成本。统计信息保持在 SYSATTRIBUTE 中,其形式为索引的每项统计信息占一行。
| object_type | object_id | attribute_id(来自 SYSATTRIBUTENAME | sub_object_id1 | sub_object_id2 | attribute_value | |
|---|---|---|---|---|---|---|
| 表页可用百分比 | T | table_id | NULL | NULL | 每个表页中的剩余空闲空间百分比 | |
| 聚簇索引 | T | table_id | 2 | index_number | NULL | NULL |
| 不同的键值数量 | I | table_id | 3 | NULL | NULL | 不同的键值数量 |
| 叶页数 | I | table_id | 4 | index_number | NULL | 叶页数 |
| Index depth | I | table_id | 5 | index_number | NULL | index depth |
| 最大索引键值距离 | I | table_id | 6 | index_number | NULL | 包含相同键值的行之间相距页数的最大值 |
SYSATTRIBUTE 表中的列具有下列特性:
| 列名 | 列类型 | 列约束 |
|---|---|---|
| object_type | CHAR(1) | NOT NULL |
| object_id | UNSIGNED INT | NOT NULL |
| attribute_id | UNSIGNED INT | NOT NULL。外键引用 SYSATTRIBUTENAME。 |
| sub_object_id1 | UNSIGNED INT | |
| sub_object_id2 | UNSIGNED INT | |
| attribute_value | LONG VARCHAR |
object_type 该属性描述的对象类型。例如,T 表示表,I 表示索引。
object_id 特定对象的 ID。对象 ID 信息可在执行 SELECT * FROM SYSTABLE 后从 table_id 列中得到。
attribute_id 代表所描述的属性的编号。每个属性 ID 的描述性名称都存储在 SYSATTRIBUTENAME 中。
sub_object_id1 属性的附加信息,没有附加信息时为 NULL。
sub_object_id2 属性的附加信息,没有附加信息时为 NULL。
attribute_value 属性的值。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。