Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在此表上使用MySQL表分区?_Mysql_Partitioning - Fatal编程技术网

如何在此表上使用MySQL表分区?

如何在此表上使用MySQL表分区?,mysql,partitioning,Mysql,Partitioning,我有一张基本上如下所示的桌子: CREATE TABLE myTable ( id INT auto_increment, field1 TINYINT, field2 CHAR(2), field3 INT, theDate DATE, otherStuff VARCHAR(20) PRIMARY KEY (id) UNIQUE KEY (field1, field2, field3) ) 我想根据日期的月份和年份对表进行分区,

我有一张基本上如下所示的桌子:

CREATE TABLE myTable (
    id INT auto_increment,
    field1 TINYINT,
    field2 CHAR(2),
    field3 INT,
    theDate DATE,
    otherStuff VARCHAR(20)
    PRIMARY KEY (id)
    UNIQUE KEY (field1, field2, field3)
)
我想根据日期的月份和年份对表进行分区,但是他告诉我不允许:

分区表的分区表达式中使用的所有列必须是该表可能具有的每个唯一键的一部分。换句话说,表上的每个唯一键都必须使用表分区表达式中的每一列


我的选择是什么?我仍然可以对表进行分区吗?

否,不是当前形式


您可以删除主键,而只是将“id”作为普通索引。次要唯一索引仍然是一个问题,您需要删除它或更改分区方案以包含日期列。

否,不是当前形式


您可以删除主键,而只是将“id”作为普通索引。第二个唯一索引仍然是一个问题,您需要删除它或更改分区方案以包含Date列。

如果您是基于datetime列的年份和月份进行分区,您是否想过为每个年份和月份组合创建一个表,然后使用一个?我知道这并不能直接回答您的问题,但我认为这可能会有所帮助……

如果您是基于datetime列的年份和月份进行分区,您是否考虑过为每个年份和月份组合创建一个表,然后使用一个?我知道这并不能直接回答您的问题,但我认为这可能会有所帮助……

我在这里写了一篇关于这个问题的博文(rails使用整数PKs)。同样的技术也适用于您的情况,但不幸的是,您必须删除[field1,field2,field3]唯一键


丢弃唯一的密钥也是我处理过的一个问题(尽管在帖子中没有提到)。在创造记录之前,我通过实施存在性检查来解决这个问题,意识到由于比赛条件的原因,我们仍然会偶尔被欺骗。实际上,这并不是一个问题。然而,增加的查询吞吐量需要扩大innodb缓冲区大小,因为i/o非常残酷。

我在这里写了一篇关于这个问题的博客文章(rails使用整数PKs)。同样的技术也适用于您的情况,但不幸的是,您必须删除[field1,field2,field3]唯一键


丢弃唯一的密钥也是我处理过的一个问题(尽管在帖子中没有提到)。在创造记录之前,我通过实施存在性检查来解决这个问题,意识到由于比赛条件的原因,我们仍然会偶尔被欺骗。实际上,这并不是一个问题。然而,增加的查询吞吐量需要扩大innodb缓冲区的大小,因为i/o非常残酷。

Hi Lytol,我曾考虑过这一点,但我听说它们实际上比只拥有一个大表要慢。你有什么见解吗?嗨,莱托,我已经考虑过了,但是我听说他们实际上比只有一张大桌子要慢。你有什么见解吗?