WEB开发网
开发学院数据库DB2 DB2 V9.7 本地分区索引 阅读

DB2 V9.7 本地分区索引

 2009-07-23 16:13:47 来源:WEB开发网   
核心提示: 上面的示例中,非分区索引 X1 存储在表空间 TS2 上,DB2 V9.7 本地分区索引(5),这是由于在创建表 T1 的为所有非分区索引指定了缺省表空间 TS2 ,分区索引 X2 和 X3 的数据分区 0 对应的索引分区存储在表空间 ts3 上,分区索引空间占用与扫描性能分区表主要应用在

上面的示例中,非分区索引 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 
 ;

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB 本地 分区

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接