InnoDB 外键和 MySQL 分区

InnoDB foreign keys and MySQL partitioning

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

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 说:

Foreign keys not supported for partitioned InnoDB tables. Partitioned tables using the InnoDB storage engine do not support foreign keys.

你不能按年份对这个 table 进行分区,因为 table 上的每个唯一键都必须使用 table 分区中的每一列表达式.

阅读 https://dev.mysql.com/doc/refman/8.0/en/partitioning-limitations-partitioning-keys-unique-keys.html 了解详细信息。