DB2 建表

发布时间 2023-03-29 15:20:36作者: tomato_4

ALTER TABLE "XXXX"."tableA" PCTFREE 20 ;

CREATE INDEX "schema"."XXXX_INDEX" ON "XXX"."TABLE"
("columnA" ASC)
COMPRESS YES
INCLUDE NULL KEYS ALLOW REVERSE SCANS ;

PCTFREE : pctfree 标示要留多少空间,一般默认参数是20,表示留20%
即当块里的数据达到80%里,就不会往这个块里写新数据.pctfree 20 --块保留20%的空间留给更新该块数据使用


compress YES : 当我们的系统中数据量很大,IO 需求超过了磁盘系统提供的容量(即 IO 成为系统的瓶颈)时,行压缩技术能够有效的减少读写磁盘的次数。
DB2 9.7 更进一步提出了索引压缩技术,减少索引磁盘空间的占用,减少读取索引时的 IO 次数从而提高了性能.

ALLOW REVERSE SCANS: 尽管当在 CREATE INDEX 语句中指定了 ALLOW REVERSE SCANS 参数时可以按逆向方向搜索值,但是,执行按指定索引顺序的扫描比执行逆向扫描稍微更快一些。这是DB2 V8的规定,DB2 V9默认情况下就是ALLOW REVERSE SCANS

INCLUDE NULL KEYS : 可以给空值建索引。

 

聚簇索引: DB2可以建立聚簇索引。
DB2索引实现是一个B+树。

创建索引的目的还有一个就是保证数据唯一性,可以利用”CREATE UNIQUE INDEX <INDEX_NAME> ON <TABLENAME> (<COLNAME>)”,来完成。

主键会隐式创建索引,所以请不要在主键上创建索引浪费空间。


具有大量重复数据的列上不要创建索引。在大量重复的列上创建索引没有任何意义。如下数据结构:表中字段col1有大量重复数据,其中的数据分布是按照90%的Y,和10%的N来分布。
这样的列上创建索引没有任何意义。在查询条件为col1=‘Y’时,该表的索引扫描和表扫描没有特大差异。根据实践经验,列上的数据分布应该均匀,并且抽密度不能大于5 ‰。