파티션에 사용한 타임 스탬프 열이있는 'fvs_data'테이블이 있습니다. 복잡한 쿼리가있을 경우 쿼리 최적화 프로그램이 올바른 파티션을 선택하지 않는 것 같습니다. , p_2011_44 TO_DAYS 사람 ('2011-11-02') = 734,808 : 예를 들어,이 쿼리MySQL 파티션 선택이 올바르게 최적화되지 않았습니다.
EXPLAIN PARTITIONS SELECT * FROM `fvs_data` WHERE `timestamp` = '2011-11-02'
는 격벽리스트보기와 같이 정확한 분할을 이용한다.
는 그러나 동일한 파티션을 반환해야 다른 조건을 추가하는 경우, 그것은 다른 파티션
파티션 목록 p_2011_42, p_2011_44을 반환EXPLAIN PARTITIONS SELECT * FROM `fvs_data` WHERE `timestamp` > '2011-11-01' AND `timestamp` < '2011-11-03'
중 하나 확인하고 싶어. 여기 내
CREATE TABLE `fvs_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fvs_client_id` int(11) NOT NULL,
`timestamp` datetime NOT NULL,
`setupid` char(20) NOT NULL,
`assyline` char(20) NOT NULL,
`machine` char(20) NOT NULL,
`side` char(20) NOT NULL,
`module` char(20) NOT NULL,
`fixtureid` char(20) NOT NULL,
`fixturepos` char(20) NOT NULL,
`feedpos` char(20) NOT NULL,
`partnum` char(20) NOT NULL,
`vendor` char(20) NOT NULL,
`tid` char(20) NOT NULL,
`quant` char(20) NOT NULL,
`status` char(32) NOT NULL,
`oper` char(20) NOT NULL,
`lane1` char(20) NOT NULL,
`lane2` char(20) NOT NULL,
`sn` char(20) NOT NULL,
`totalcomp` char(20) NOT NULL,
PRIMARY KEY (`id`,`timestamp`),
KEY `fvs_client_id` (`fvs_client_id`),
KEY `setupid` (`setupid`),
KEY `assyline` (`assyline`),
KEY `machine` (`machine`),
KEY `side` (`side`),
KEY `module` (`module`),
KEY `fixtureid` (`fixtureid`),
KEY `fixturepos` (`fixturepos`),
KEY `feedpos` (`feedpos`),
KEY `partnum` (`partnum`),
KEY `vendor` (`vendor`),
KEY `tid` (`tid`),
KEY `status` (`status`),
KEY `oper` (`oper`),
KEY `lane1` (`lane1`),
KEY `lane2` (`lane2`),
KEY `sn` (`sn`)
) ENGINE=MyISAM AUTO_INCREMENT=36032 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (TO_DAYS(timestamp))
(PARTITION p_2011_42 VALUES LESS THAN (734796) ENGINE = MyISAM,
PARTITION p_2011_43 VALUES LESS THAN (734803) ENGINE = MyISAM,
PARTITION p_2011_44 VALUES LESS THAN (734810) ENGINE = MyISAM,
PARTITION p_2011_45 VALUES LESS THAN (734817) ENGINE = MyISAM) */
내가 주 파티션을하려고하지만, 일요일로 시작하는 실제 주에 기반하고 있지 않다 CREATE TABLE 구문이다, 난 그냥 7 년의 일을 나누어 파티션 이름을 만들 것을 사용 .
감사합니다. 내 소프트웨어는 실제로 새로운 파티션을 동적으로 추가하여 다음 주 데이터의 파티션이 데이터가 있기 전에 항상 준비되도록합니다. 또한 일부 데이터 제한보다 오래된 파티션을 프 루닝합니다. – Matt
이해하지만, 잘못된 값이 삽입 될 경우를 대비하여 MAXVALUE 파티션을 유지하는 것을 선호합니다. 어쩌면 당신은 그것을 실패하기를 원할 것입니다, 아마 당신은 성공하기를 원할 것입니다. –