我设计的事实表由一系列可选的ID和指标组成,还包含许多一致GUID的复合主键。可选ID默认为NULL,并且必须在其顺序中是唯一的。我将密钥放在一个独特的索引中,但我需要它们只相对于复合键是唯一的。
CREATE TABLE IF NOT EXISTS `fact_affiliate_session` (
`dim_date` char(36) NOT NULL DEFAULT '',
`dim_offer` char(36) NOT NULL DEFAULT '',
`dim_campaign` char(36) NOT NULL DEFAULT '',
`dim_country` char(36) NOT NULL,
`dim_domain` char(36) DEFAULT '',
`dim_affiliate` char(36) NOT NULL DEFAULT '',
`dim_affiliate_sub` char(36) DEFAULT NULL,
`dim_affiliate_sub2` char(36) DEFAULT NULL,
`dim_affiliate_sub3` char(36) DEFAULT NULL,
`dim_affiliate_sub4` char(36) DEFAULT NULL,
`dim_affiliate_sub5` char(36) DEFAULT NULL,
`dim_affiliate_sub6` char(36) DEFAULT NULL,
`dim_affiliate_sub7` char(36) DEFAULT NULL,
`dim_affiliate_sub8` char(36) DEFAULT NULL,
`dim_affiliate_sub9` char(36) DEFAULT NULL,
`dim_affiliate_sub10` char(36) DEFAULT NULL,
`metric_clicks` int(10) NOT NULL DEFAULT '0',
`metric_bounced` int(10) NOT NULL DEFAULT '0',
`metric_exits` int(10) NOT NULL DEFAULT '0',
`metric_prospects` int(10) NOT NULL DEFAULT '0',
`metric_leads` int(10) NOT NULL DEFAULT '0',
`metric_buyers` int(10) NOT NULL DEFAULT '0',
`metric_pages` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`dim_date`,`dim_offer`,`dim_campaign`,`dim_country`,`dim_affiliate`),
UNIQUE KEY `dim_affiliate_subs` (`dim_affiliate_sub`,`dim_affiliate_sub2`,`dim_affiliate_sub3`,`dim_affiliate_sub4`,`dim_affiliate_sub5`,`dim_affiliate_sub6`,`dim_affiliate_sub7`,`dim_affiliate_sub8`,`dim_affiliate_sub9`,`dim_affiliate_sub10`),
KEY `dim_domain` (`dim_domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
不幸的是,由于分组对于我们试图完成的大部分内容是不可行的(尽管可能需要重新思考),但不幸的是,潜艇有限。
那么,有没有办法根据PRIMARY KEY制作一个UNIQUE索引?