DPF的分区键必须是主键或唯一索引的子集吗?

向请问各位专家,db2数据库的DPF中分区键必须是主键或唯一索引的子集吗?是否可以是任意字段?如何才能更好的实现分区内执行?谢谢
参与14

6同行回答

db2bird1db2bird1数据库管理员enmo
官方文档的描述如下:表的主键和所有惟一索引都必须是相关分区键的超集。换句话说,作为分区键一部分的所有列都必须出现在主键或惟一索引定义中。列的顺序可任意。(假如没有主键或唯一键呢?且看下面)一个分区键应该包括一至三个列。通常列越少越好。整型分区键要比字符键高效,而...显示全部
官方文档的描述如下:
表的主键和所有惟一索引都必须是相关分区键的超集。换句话说,作为分区键一部分的所有列都必须出现
在主键或惟一索引定义中。列的顺序可任意。(假如没有主键或唯一键呢?且看下面)
一个分区键应该包括一至三个列。通常列越少越好。
整型分区键要比字符键高效,而字符键又比小数键高效。
如果在 CREATE TABLE 命令内没有显式地提供分区键,那么就会使用如下的这些默认值:
如果在 CREATE TABLE 语句中指定了一个主键,那么主键的首列会被用作分配键。
如果没有主键,就会使用非长型字段的首列。收起
系统集成 · 2015-08-11
浏览1868
zhujinkzhujink商业智能工程师未知
分区键可以不唯一,只是说原则上应该把唯一值最多的列作为分区键,这样数据在每个分区上的分布就会比较均匀。你可以在分区环境下执行个测试:CREATE TABLE customer (cust_id VARCHAR(80),gender CHAR(5),primary key(cust_id))DISTRIBUTE BY HASH(cust_id);看能否创建成功。...显示全部
分区键可以不唯一,只是说原则上应该把唯一值最多的列作为分区键,这样数据在每个分区上的分布就会比较均匀。
你可以在分区环境下执行个测试:
CREATE TABLE customer (
cust_id VARCHAR(80),
gender CHAR(5),
primary key(cust_id))
DISTRIBUTE BY HASH(cust_id);
看能否创建成功。若能成功创建,说明就算有主键和惟一索引,也可以用其他列做分区键。收起
银行 · 2015-08-11
浏览1852
liuhuashan_21liuhuashan_21研发工程师21
书上说的是对的显示全部

书上说的是对的

收起
软件开发 · 2015-12-02
浏览1740
普元普元研发工程师普元
我怀疑这句话是不是描述错了?显示全部
我怀疑这句话是不是描述错了?收起
软件开发 · 2015-08-11
浏览1810
db2bird1db2bird1数据库管理员enmo
回复 3# y5_set 见以上我的回复显示全部
回复 3# y5_set
见以上我的回复收起
系统集成 · 2015-08-11
浏览1761
y5_sety5_set其它不告诉你
建表的时候对分区键没要求吧,数据库按照分区键分布表数据,如果分区键必须唯一,那就不会出现数据分布不均衡的现象了吧,是我理解错了吗?显示全部
建表的时候对分区键没要求吧,数据库按照分区键分布表数据,如果分区键必须唯一,那就不会出现数据分布不均衡的现象了吧,是我理解错了吗?收起
互联网服务 · 2015-08-11
浏览1760

提问者

liuhuashan_21
研发工程师21
擅长领域: 数据库双活Db2 pureScale

相关资料

问题状态

  • 发布时间:2015-08-11
  • 关注会员:1 人
  • 问题浏览:5357
  • 最近回答:2015-12-02
  • X社区推广