为啥 Netezza 序列下一个值给出随机值?
Posted
技术标签:
【中文标题】为啥 Netezza 序列下一个值给出随机值?【英文标题】:Why Netezza Sequence next value giving random values?为什么 Netezza 序列下一个值给出随机值? 【发布时间】:2013-01-31 14:14:24 【问题描述】:顺序:
CREATE SEQUENCE STG.TEMP_PPC_SEQ AS BIGINT
START WITH 1
INCREMENT BY 1
NO MINVALUE
MAXVALUE 2147483647
NO CYCLE;
选择查询:
SELECT TPLCST.code,NEXT VALUE FOR STAGING.STG.TEMP_PPC_SEQ
FROM TEMP_PRODUCT_LIFE_CYCLE_STATUS_TYPE TPLCST
结果:
CODE NEXTVAL
30 8
80 10008
40 30008
50 40015
10 40016
20 20008
我正在随机获取 nextval。我怎样才能使它们连续?
【问题讨论】:
【参考方案1】:它们是随机的,因为 Netezza 是大规模并行的,每个 SPU 都有自己的序列值块。
【讨论】:
这完美地回答了它。序列不是获得顺序的方法。就是得到一个唯一的标识符,应该完全不关心值是什么,只要是唯一的就行了。【参考方案2】:您可以使用 Row_number() over(order by ) 来获取序列值
请往下看
http://www.enzeecommunity.com/message/8914
http://www.enzeecommunity.com/message/3272
【讨论】:
【参考方案3】:您是否正在尝试创建一个自动增量列? Netezza 不这样做。此外,如果您使用序列生成器,它将是唯一的,但不是连续的——序列中会有漏洞。
【讨论】:
以上是关于为啥 Netezza 序列下一个值给出随机值?的主要内容,如果未能解决你的问题,请参考以下文章