繁体   English   中英

InnoDB 外键和 MySQL 分区

[英]InnoDB foreign keys and MySQL partitioning

我使用 MySQL 服务器版本:5.7.32-0ubuntu0.16.04.1(Ubuntu)。 在我的数据库中,我有这张包含百万条记录的表:

CREATE TABLE `tableA` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `timestamp` timestamp NULL DEFAULT NULL,
  `value` int(11) NOT NULL,
  `tableB_id` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_sjfet8dx50bhix3ub1dwocpcx` (`timestamp`,`tableB_id`),
  KEY `FK_su2f3awnwvdpq1h3x5x0drjaw` (`tableB_id`),
  CONSTRAINT `FK_su2f3awnwvdpq1h3x5x0drjaw` FOREIGN KEY (`tableB_id`) REFERENCES `tableB` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

是否可以按范围使用分区(在这种情况下按年份)?

即使存在外键也可以分区吗?

谢谢!

不。

https://dev.mysql.com/doc/refman/8.0/en/partitioning-limitations.html说:

分区 InnoDB 表不支持外键。 使用 InnoDB 存储引擎的分区表不支持外键。

无论如何,您不能按年份对该表进行分区,因为表上的每个唯一键都必须使用表分区表达式中的每一列。

阅读https://dev.mysql.com/doc/refman/8.0/en/partitioning-limitations-partitioning-keys-unique-keys.ZFC35FDC70D5FC69D2539883A822C7了解详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM