更改MYSQL表添加主键,然后对表进行分区

时间:2013-04-09 10:40:49

标签: mysql sql database

当我尝试将主键添加到MYSQL表然后根据该表的日期列对其进行分区时,请向我解释我需要考虑的检查点

1 个答案:

答案 0 :(得分:0)

创建主键:

您可能希望确保:

  • 表中没有定义主键

    使用DESCRIBE TABLE查询。

  • 作为主键的列在聚合时不包含重复项。

    SELECT CONCAT(col1, col2, col3) AS key
    FROM table
    GROUP BY col1, col2, col3
    HAVING COUNT(key) > 1
    

    或者,您可以使用IGNORE查询中的ALTER TABLE选项删除重复项,并将第一个匹配项作为主键。

  • 除InnoDB外,确保存储节点上至少有足够的可用空间,这通常比表的大小多一点,因为MySQL会想要将表复制到新文件改变它。

对于特定列的分区,该列必须是主键的一部分,并且可以选择单独作为索引。因此,您必须在用于创建主键的列组和上面的检查列表中包含您希望分区的日期。