Mysql分区表对于唯一约束的局限性


  本文标签:Mysql分区表

  Mysql分区表相信大家都有一些了解,下面就为您介绍Mysql分区表对于唯一约束的局限性,如果您对此方面感兴趣的话,不妨一看  。

  Mysql分区表关于Partitioning Keys, Primary Keys, and Unique Keys的限制

  在5.1中Mysql分区表对唯一约束有明确的规定,每一个唯一约束必须包含在分区表的分区键(也包括主键约束)  。
这句话也许不好理解,我们做几个实验:

  1. CREATE TABLE t1     
  2. (      id INT NOT NULL,  
  3.        uid INT NOT NULL,   
  4.        PRIMARY KEY (id)  
  5. )  
  6. PARTITION BY RANGE (id)     
  7. (PARTITION p0 VALUES LESS THAN(5) ENGINE = INNODB,   
  8.  PARTITION p1 VALUES LESS THAN(10) ENGINE = INNODB);   
  9. CREATE TABLE t1     
  10. (      id INT NOT NULL,      
  11.        uid INT NOT NULL,  
  12.        PRIMARY KEY (id)  
  13. )  
  14. PARTITION BY RANGE (id)     
  15. (PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM DATA DIRECTORY=/tmp INDEX DIRECTORY=/tmp,   
  16. PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM DATA DIRECTORY=/tmp INDEX DIRECTORY=/tmp);   
  17.  
  18. mysql> CREATE TABLE t1    
  19.      -> (      id INT NOT NULL,      
  20.      ->        uid INT NOT NULL,   
  21.      ->        PRIMARY KEY (id),  
  22.      ->        UNIQUE KEY (uid)   
  23.      -> )  
  24.      -> PARTITION BY RANGE (id)   
  25.      -> (PARTITION p0 VALUES LESS THAN(5),  
  26.      ->  PARTITION p1 VALUES LESS THAN(10)   
  27.      -> );ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the tables partitioning function  
  28.