固定长度或可变长度字符数据类型

数据库服务器支持固定长度和可变长度字符数据的存储。固定长度列需要定义的字节数而不管实际的数据大小。CHAR 数据类型属于固定长度。例如,CHAR(25) 列对于所有值需要 25 字节的存储,因此字符串 "This is a text string" 使用 25 字节的存储。

可变长度列大小可为它的数据占据的字节数。NVARCHAR、VARCHAR 和 LVARCHAR 数据类型是可变长度字符数据类型。例如,VARCHAR(25) 列为列值最多保留 25 字节的存储,但字符串 "This is a text string" 仅使用保留的 25 字节中的 21 字节。VARCHAR 数据类型最多可存储 255 字节数据。要获取关于 IFX_PAD_VARCHAR 环境变量的信息,其设置控制数据库服务器发送和接收 VARCHAR 和 NVARCHAR 数据值的方式,请参阅 GBase 8s SQL 参考指南

由于行大小的最大限制为 32,767 字节,因此不可以多于大约 195 可变长度或 ROW 类型列创建单个表。

访问有可变长度列的大型表

对于带有多于一百万行的表,如果查询执行轻扫描,而不是缓冲池扫描,则使用全表扫描或跳跃扫描访问方法的查询更加高效。然而,在包括 NVARCHAR、VARCHAR 或 LVARCHAR 数据类型列,或其基础类型为可变长度列的 DISTINCT 数据类型的列的表上,不支持轻扫描,除非将 BATCHEDREAD_TABLE 配置参数(或 BATCHEDREAD_TABLE 会话环境选项)设置为 1

限制:
在正启用 BATCHEDREAD_TABLE 上轻扫描的依赖还适用于其模式或存储属性包括下列任何情况的表:
  • 表压缩
  • 任何可变长度数据类型的列
  • 占据超过单个存储页的行。
要获取更多关于查询优化器何时选择执行轻扫描的执行路径来访问大型表的信息,请参阅您的 GBase 8s 性能指南