3

現在パーティション化されている次の MySQL テーブルがあります。

「message_read」キーにサブパーティションを追加したい - これは未読メッセージのパーティションを介した検索を最適化するためです。

CREATE TABLE `messages` (
  `pid` int(50) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
  `userid1` int(10) unsigned NOT NULL COMMENT 'Message Sender',
  `userid2` int(10) unsigned NOT NULL COMMENT 'Message Receiver',
  `message` text NOT NULL COMMENT 'Actual Message',
  `message_read` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=Not Read & 1=Read',
  `datetime` datetime NOT NULL COMMENT 'Date Time',
  PRIMARY KEY (`pid`,`datetime`),
  KEY `userid1` (`userid1`),
  KEY `userid2` (`userid2`),
  KEY `message_read` (`message_read`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (TO_DAYS(`datetime`))
(PARTITION p0 VALUES LESS THAN (735234) ENGINE = InnoDB,
 PARTITION p1 VALUES LESS THAN (735265) ENGINE = InnoDB,
 PARTITION p2 VALUES LESS THAN (735293) ENGINE = InnoDB,
 PARTITION p3 VALUES LESS THAN (735324) ENGINE = InnoDB,
 PARTITION p4 VALUES LESS THAN (735354) ENGINE = InnoDB,
 PARTITION p5 VALUES LESS THAN (735385) ENGINE = InnoDB,
 PARTITION p6 VALUES LESS THAN (735415) ENGINE = InnoDB) */

現在のパーティションは日時スタンプにあります。「message_read」のサブパーティションにどのように追加できますか?

ありがとうございました

4

2 に答える 2

0

主キーに message_read を追加する必要があります。次に(サブパーティショニングにはハッシュまたはキーを使用できます):

CREATE TABLE `messages` (
  `pid` INT(50) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
  `userid1` INT(10) UNSIGNED NOT NULL COMMENT 'Message Sender',
  `userid2` INT(10) UNSIGNED NOT NULL COMMENT 'Message Receiver',
  `message` TEXT NOT NULL COMMENT 'Actual Message',
  `message_read` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '0=Not Read & 1=Read',
  `datetime` DATETIME NOT NULL COMMENT 'Date Time',
  PRIMARY KEY (`pid`,`datetime`, message_read),
  KEY `userid1` (`userid1`),
  KEY `userid2` (`userid2`),
  KEY `message_read` (`message_read`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
PARTITION BY RANGE (TO_DAYS(`datetime`))
SUBPARTITION BY HASH (message_read)
(PARTITION p0 VALUES LESS THAN (735234)(SUBPARTITION s0, SUBPARTITION s1),
 PARTITION p1 VALUES LESS THAN (735265)(SUBPARTITION s2, SUBPARTITION s3),
 PARTITION p2 VALUES LESS THAN (735293)(SUBPARTITION s4, SUBPARTITION s5),
 PARTITION p3 VALUES LESS THAN (735324)(SUBPARTITION s6, SUBPARTITION s7),
 PARTITION p4 VALUES LESS THAN (735354)(SUBPARTITION s8, SUBPARTITION s9),
 PARTITION p5 VALUES LESS THAN (735385)(SUBPARTITION s10, SUBPARTITION s11),
 PARTITION p6 VALUES LESS THAN (735415)(SUBPARTITION s12, SUBPARTITION s13)) ;

これがあなたが探していたものであることを願っています。

ありがとう

于 2013-03-13T15:59:15.607 に答える