2012-06-27 3 views
0

나는 다음과 같은 구문을 사용하여 테이블을 작성하는 경우,

CREATE TABLE IF NOT EXISTS `hashes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`hash` binary(20) NOT NULL, 
PRIMARY KEY (`id`,`hash`), 
UNIQUE KEY (`hash`) 
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE = 4 AUTO_INCREMENT=1 
PARTITION BY KEY(`hash`) 
PARTITIONS 10; 

그리고 삽입 쿼리 그런 다음 자동 증가 열 작동합니다.

아래와 같이 파티션이없는 테이블을 만들고 자동 증가 값 위에 쿼리를 삽입하면 모든 업데이트 또는 삽입시 1 씩 증가하여 A_I 열이 쿼리를 통해 10 개의 업데이트를 수행 할 수 있고 1 삽입으로 인해 열 값이 10 자리로 이동합니다.

CREATE TABLE IF NOT EXISTS `hashes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`hash` binary(20) NOT NULL, 
PRIMARY KEY (`id`,`hash`), 
UNIQUE KEY (`hash`) 
) ENGINE=InnoDB AUTO_INCREMENT=1; 

나는 과 업데이트에 대한 이유는 값이 증가 이해하지만이 테이블이 분할되어 있지 않은 경우 왜 이해가 안 돼요?

는 당신이 변경할 수 없습니다

답변

0

하지만이 같은 시도 할 수 있습니다 :

mysql> set @a:= (select max(id) + 2 from hashes); 

mysql> insert into hashes (id) values ($value) on duplicate key update [email protected]; 

참고 : 파티션이 MySQL의 5.6 후 약간의 변경, 당신은 어떤 버전이 있습니까?