Причина ограничения заключается в том, что внутренне каждый раздел является собственной таблицей InnoDB, поэтому поиск по внешнему ключу должен быть распределен по всем этим, а не один поиск 1: 1.
Механизм InnoDB даже не знает, что это не независимые таблицы с одинаковой структурой, а что они образуют многораздельную таблицу на уровне SQL. В то же время проверки внешнего ключа все еще осуществляются в ядре, поэтому они еще не работают для секционированных таблиц.
Причина, по которой вы все еще можете использовать секционированные таблицы и жертвовать проверками ссылочной целостности на стороне сервера это просто: компромиссы в производительности.
На стороне MariaDB у нас есть запрос на поддержку внешнего ключа, и в настоящее время он предназначен для предстоящей серии выпусков 10.5:
https://jira.mariadb.org/browse/MDEV-12483
Но еще не уверен на 100%, что это произойдет вовремя за 10,5.
На стороне MySQL есть:
https://dev.mysql.com/worklog/task/?id=148
, но с 2009 года, насколько я могу судить, уже без какого-либо видимого прогресса.
PS: Я принимал участие в проектах, где ФК были только в размещать во время разработки и тестирования, но не в реальной производственной БД, предполагая, что возможные нарушения FK уже были бы обнаружены и исправлены во время разработки / тестирования ... снова это было сделано для перфорирования Из соображений романтики, поскольку FK-проверки требуют своего времени ...