Slide 67
Slide 67 text
InnoDBの場合はサロゲートキーを使うと容量効率が良い
もともとPRIMARY KEYだったものはUNIQUE KEYとして追
加して「意味的なプライマリーキー」を保つ
mysql> ALTER TABLE t1 DROP PRIMARY KEY, ADD seq BIGINT PRIMARY KEY auto_increment FIRST, ADD UNIQUE KEY(
digest);
Query OK, 0 rows affected (3 min 46.84 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`seq` bigint(20) NOT NULL AUTO_INCREMENT,
`dt` datetime NOT NULL,
`ipaddr` varchar(17) NOT NULL,
`url_string` varchar(255) NOT NULL,
`digest` varchar(32) NOT NULL,
`number` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`seq`),
UNIQUE KEY `digest` (`digest`),
KEY `ipaddr` (`ipaddr`),
KEY `url_string` (`url_string`),
KEY `dt` (`dt`,`ipaddr`),
KEY `dt_2` (`dt`,`url_string`)
) ENGINE=InnoDB AUTO_INCREMENT=10001061 DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
66/87