IBM Informix Dynamic Server 11.5 新特性:BIGINT与BIGSERIAL数据类型

需积分: 10 1 下载量 85 浏览量 更新于2024-08-01 收藏 2.53MB PPT 举报
"IDS 11.5 新特性" IBM Informix Dynamic Server 11.5 引入了若干新特性,其中最显著的是对 BIGINT 和 BIGSERIAL SQL 数据类型的添加。这些新数据类型是根据 ANSI 标准设计的,旨在提供比 INT8 和 SERIAL8 更好的性能选项。然而,IDS 仍然会继续支持现有的客户应用程序中的 INT8 和 SERIAL8 数据类型。 BIGINT 和 BIGSERIAL 的引入满足了处理大整数值的需求。BIGINT 是一种可以存储非常大整数的类型,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,而 BIGSERIAL 类似于 AUTO_INCREMENT 或 SEQUENCE,它是一个自增的大整数类型,通常用于主键生成。 在实际操作中,你可以像下面这样使用这些新数据类型: - 创建一个包含 BIGSERIAL 的表 T1,其中 C1 为主键,C2 为 BIGINT 型: ```sql CREATE TABLE T1 (C1 BIGSERIAL(12345), C2 BIGINT); ``` 接着创建基于 C2 的唯一索引 IX1: ```sql CREATE UNIQUE INDEX IX1 ON T1 (C2); ``` 然后插入一行数据: ```sql INSERT INTO T1 VALUES (0, 1234567); ``` 对于分布式数据库环境,可以通过表达式分片创建跨多个数据库空间的表 CT1: ```sql CREATE TABLE CT1 (A BIGINT, B BIGSERIAL) FRAGMENT BY EXPRESSION A <= 1000000000 IN DBSPACE 2, A > 1000000000 AND A <= 29990000000 IN DBSPACE 3, A > 29990000000 AND A <= 999999999999999 IN DBSPACE 1; ``` 同时,IDS 11.5 允许在同一表中混合使用 SERIAL 和 SERIAL8 数据类型,但不允许在一个列定义中同时使用 SERIAL 和 SERIAL8,如以下示例所示,这会产生错误: ```sql CREATE TABLE T7 (col1 SERIAL, COL2 SERIAL8, col3 BIGSERIAL); -- Raises error ``` 在这个例子中,T7 表的第三个列定义将导致错误,因为 IDS 不允许在一个表的多个列中混用 SERIAL 和 SERIAL8。 IDS 11.5 的新特性提升了大数据量处理的效率,并扩展了对大整数的支持,同时保持了向后兼容性,以确保现有应用的平稳过渡。这使得 IDS 在处理大量数据的场景下更具竞争力,也提供了更多的灵活性来满足各种数据库设计需求。