【问题标题】:No partitioning defined in Many to Many conjugation table多对多共轭表中未定义分区
【发布时间】:2017-02-19 15:48:39
【问题描述】:

我在jobseqtypes 之间有Many to Many 关系,所以我创建了第三个名为eqtype_jobs 的表。但是,在这个关系共轭、归一化、表中我并没有创建一个独立的主键id,例如我只是将job_ideqtype_id都设置为主键。以下是表结构:

CREATE TABLE `eqtype_jobs` (
  `job_id` int(10) UNSIGNED NOT NULL,
  `eqtype_id` int(4) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `eqtype_jobs`
--
ALTER TABLE `eqtype_jobs`
  ADD PRIMARY KEY (`eqtype_id`,`job_id`),
  ADD KEY `job_id` (`job_id`);

--
-- Constraints for dumped tables
--

--
-- Constraints for table `eqtype_jobs`
--
ALTER TABLE `eqtype_jobs`
  ADD CONSTRAINT `eqtype_jobs_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `eqtype_jobs_ibfk_2` FOREIGN KEY (`eqtype_id`) REFERENCES `eqtypes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

这是我使用独立主键id 省略的第一个表。我以前使用过其他多对多关系和id。但是,phpMyAdmin 在显示eqtype_jobs 表结构时显示如下提示:

未定义分区!

由于没有独立的主键,即id,导致此消息的原因是否与分区有关?还是表的复合主键没有定义好?!这个关于部分的通知是否会对未来的性能产生负面影响?!

【问题讨论】:

    标签: mysql phpmyadmin many-to-many relational-database composite-primary-key


    【解决方案1】:

    不,该消息并没有说明您的表结构有什么不好。从语法和UI方面来说,有感叹号有点奇怪,但这里没有问题。

    Partitioning 是一种划分数据在磁盘上的存储方式的方法。您看到的结构页面区域处理分区(见图),当没有配置分区时,您会看到警告您的通知。

    如果配置了分区,您将看到参数:

    因此您可以放心地忽略该页面的分区部分。

    【讨论】:

    • 如果想尝试建议的“分区”怎么办。分区能否提高性能?您能否通过“如何添加分区”的链接或进一步阅读来更新您的答案。谢谢
    • @MonkeyPuzzle 我认为这确实超出了这个问题的范围,并且更多地属于一般的 MySQL 类别,所以我认为你应该打开你自己关于分区的问题(我很乐意看看如果你一旦这样做,我就会指向它)。在某些情况下,可以实现性能提升,但主要是如果分区分布在多个存储设备上。
    • 在 phpMyAdmin 中,上面显示的“分区表”按钮让您开始使用界面(然后您必须选择您的分区标准)。 《Mastering phpMyAdmin 3.3.x for Effective MySQL Management》一书有一章是关于创建分区 (packtpub.com/mapt/book/big_data_and_business_intelligence/…) 的,MySQL 手册也提供了关于一般原则的大量信息。
    猜你喜欢
    • 2012-05-10
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多