CREATE SCHEMA 块将两行添加至 sysindexes 系统目录表(GBase 8s 的 sysindices 表)。这些行对应于对 customer 表创建的索引,如在以下示例中所示。 idxname c_num_ix state_ix owner maryl maryl GBase 8s SQL 指南:参考 南大通用数据技术股份有限公司 - 12 - idxname c_num_ix state_ix tabid 101 101 idxtype U D 集群 part1 1 8 part2 0 0 part3 0 0 part4 0 0 part5 0 0 part6 0 0 part7 0 0 part8 0 0 part9 0 0 part10 0 0 part11 0 0 part12 0 0 part13 0 0 part14 0 0 part15 0 0 part16 0 0 levels leaves nunique clust idxflags 在此表中,idxtype 列标识创建的索引是需要唯一值 (U) 还是接受重复的值 (D)。例 如:customer.customer_num 列的 c_num_ix 索引是唯一的。 如果在执行查询或其他数据操作语言 (DML) 语句之前使用 UPDATE STATISTICS 语句 来更新系统目录,那么可以确保查询执行优化器可用的信息是最新的。 访问系统目录 普通用户对系统目录的访问是只读的。具有 Connect 或 Resource 特权的用户不能 GBase 8s SQL 指南:参考 南大通用数据技术股份有限公司 - 13 - 变更目录,但他们可以使用标准 SELECT 语句以只读方式来访问系统目录表中的数据。 例如,下面的 SELECT 语句显示数据库中用户创建表的所有表名及对应的 tabid 代 码: SELECT tabname, tabid FROM systables WHERE tabid > 99 在使用 DB-Access 时,只显示您创建的表。要显示系统目录表,输入以下语句: SELECT tabname, tabid FROM systables WHERE tabid < 100 可以使用 SUBSTR 或 SUBSTRING 函数来仅选择源字符串的一部分。要按列显示表的 列表,输入以下语句: SELECT SUBSTR(tabname, 1, 18), tabid FROM systables 虽然用户 gbasedbt 可以修改大部分系统目录表,但不应该在这些表中更新、删除或 插入任何行。修改系统目录表的内容可能会影响数据库的完整性。然而,您可以安全地使 用 ALTER TABLE 语句来修改系统目录表的下一个扩展数据块的大小。更改下一个扩展数 据块大小不会影响已存在的扩展数据块。 但是,对于 GBase 8s 的某些目录表,将条目添加至系统目录表是有效的。例如,对 于 syserrors 系统目录表和 systracemsgs 系统目录表,DataBlade (R) 模块开发者可以 直接插入位于这些系统目录表中的条目。 更新系统目录数据 如果在执行查询或其他数据操作语言 (DML) 语句之前使用 UPDATE STATISTICS 语句 来更新系统目录,那么可以确保查询执行优化器可用的信息是最新的。 在 GBase 8s 中,优化器会为执行 SQL 查询和其他 DML 操作确定最有效的策略。优 化器允许您查询数据库而不必全面考虑要先在连接中搜索哪些表或要使用哪些索引。优化 器使用来自系统目录中的信息以确定最佳查询策略。 当删除或修改表时,数据库服务器不会自动更新系统目录中的相关统计数据。例如: 如果使用 DELETE 语句删除表中的一行或多行,那么 systables 系统目录表中用于保存该 表行数的 nrows 列不会自动更新。 UPDATE STATISTICS 语句会让数据库服务器重新计算 systables、sysdistrib、 syscolumns 和 sysindices 系统目录表中以及 sysindexes 视图中的数据。(对于在 STATLEVEL 属性设置为 FRAGMENT 的分段表上的操作,它还会更新 sysfragdist 和 sysfragments 系统目录表。)在运行 UPDATE STATISTICS 之后,systables 系统目录表就 在 nrows 列中保存正确的值。如果在运行 UPDATE STATISTICS 时指定 MEDIUM 或 HIGH 方式,那么 sysdistrib 表会保存更新的列分布数据。如果在运行 UPDATE STATISTICS 时 指定 MEDIUM 或 HIGH 方式,那么 sysdistrib 系统目录表会保存更新的列分布数据。对于 分段级别的统计信息,sysfragdist 系统目录表会保存更新的列分布数据。 每当对数据表进行大量修改时,使用 UPDATE STATISTICS 语句来更新系统目录中的 GBase 8s SQL 指南:参考 南大通用数据技术股份有限公司 - 14 - 数据。有关 UPDATE STATISTICS 语句的更多信息,请参阅 GBase 8s SQL 指南:语法。