0
如果我創建一個表具有以下語法,Mysql自動增量增加2和1?
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;
而且插入查詢語法如下
INSERT INTO hashes (hash) VALUES ($value) ON DUPLICATE KEY UPDATE hash = hash
然後自動遞增列按預期工作既如果該行被插入或更新。
儘管創建沒有下面分區的表並插入上面的查詢時自動遞增值將在每次更新或插入時增加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;
我明白了爲什麼與更新的價值增加,但我不明白爲什麼它不會當表被分區?