与Composite主键相关的唯一索引

时间:2014-10-24 16:51:23

标签: mysql indexing innodb mysql-5.5

我设计的事实表由一系列可选的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索引?

0 个答案:

没有答案