【发布时间】:2017-02-23 21:04:41
【问题描述】:
我有大约 3400 万行,每行在 tpc-ds dataset 的 store_sales 表中有 23 列。
我有一个 composite primary key 列 ss_item_sk 和 ss_ticket_number。
在运行查询 SELECT count(DISTINCT <primary key>) .. 时,我可以看到它输出了表中存在的总行数。
现在我在primary key 旁边添加另一列,即ss_sold_date_sk。
在此之后,如果我运行countquery,我得到的打印行数比以前少。有人可以通过示例向我解释为什么会发生这种情况吗?
TL;DR
向复合主键添加列何时会停止使其唯一?
【问题讨论】:
-
我猜新列有
NULL值,这会抛出count(distinct)。 -
@RyanVincent 是的,我确定。但正如 Gordon 所说,我刚刚意识到我的第三列有我以前没有注意到的空值。
-
@GordonLinoff 是的,你是对的。我刚刚注意到存在空值。谢谢!
-
主键不允许有空列?
-
@RyanVincent 是的,你是对的。我试图找到唯一的列以便将它们设置为主键,并且想知道为什么
select count..查询在添加另一列后会减少数字。