DB2 V9.7 本地分区索引
2009-07-23 16:13:47 来源:WEB开发网上面的示例中,非分区索引 X1 存储在表空间 TS2 上,这是由于在创建表 T1 的为所有非分区索引指定了缺省表空间 TS2 。
分区索引 X2 和 X3 的数据分区 0 对应的索引分区存储在表空间 ts3 上,这是因为索引分区的缺省位置与其所引用的数据分区相同。数据分区 1、2 对应的索引分区存储在表空间 ts4 上,这是因为这两个数据分区明确指示了存储索引的表空间。数据分区 4 对应的索引分区存储存储在 ts1 上,这是因为我们没有给数据分区 4 指定存储表空间,其数据默认存储表空间为 ts1 。
在 DB2 V9.7 以后,用户创建的索引默认都是分区索引。创建非唯一分区索引时将会 DB2 将会自动使用分区键进行分区。创建唯一分区索引时,索引列中必须包含用于分区的所有列,否则 DB2 将返回 SQL20303N 错误表示索引创建失败。
分区索引空间占用与扫描性能
分区表主要应用在表比较大的场景下,因此我们使用大表才能测试出性能。下面我们创建测试表。
清单 7. 创建测试大表
drop table t1;
CREATE TABLE t1
( l_orderkey INTEGER NOT NULL, l_partkey
INTEGER, l_suppkey INTEGER, l_shipdate date, padding1 char(30)
)
PARTITION BY RANGE(l_shipdate)
(
STARTING '2008-01-01' ENDING '2008-12-31' EVERY 1 MONTH
)
;
INSERT INTO t1 (l_orderkey, l_partkey, l_suppkey,l_shipdate,padding1)
WITH TEMP (COUNTER, l_orderkey, l_partkey, l_suppkey,l_shipdate,padding1) AS
( VALUES (0, MOD(INT(RAND() * 12000000), 25), MOD(INT(RAND() * 12000000), 30),
MOD(INT(RAND() * 12000000), 30), DATE(MOD(INT(RAND() * 12000000), 366)+733042), 'A')
UNION ALL SELECT (COUNTER + 1), MOD(INT(RAND() * 12000000), 25),
MOD(INT(RAND() * 12000000), 30), MOD(INT(RAND() * 12000000), 30),
DATE(MOD(INT(RAND() * 12000000), 366)+733042), 'A' FROM TEMP
WHERE (COUNTER + 1) < 12000000
)
SELECT l_orderkey, l_partkey, l_suppkey,l_shipdate,padding1
FROM TEMP
;
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››本地行业网站细分化将网站做强
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接