关于mysql:MySQL-添加主键可以节省磁盘空间吗
MySQL 表定义主键不是必须的,并且直到明天(MySQL 版本 8.3.0)都是这样。不过,在 MGR 和 PXC 架构中不容许应用没有主键的表。如果数据表没有主键,会有许多家喻户晓的负面性能影响,其中最苦楚的是复制速度很蹩脚。 明天,我想疾速阐明一下 须要应用主键的另一个起因:磁盘空间! 创立一个非常简单的示例表: mysql > show create table test1\G*************************** 1. row *************************** Table: test1Create Table: CREATE TABLE `test1` ( `a` int NOT NULL, `b` bigint DEFAULT NULL, KEY `a` (`a`), KEY `b` (`b`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec)填充 10M 测试行,须要 748M 磁盘空间。当初,假如我的测试表的 a 列具备惟一值: mysql > select count(*) from test1;+----------+| count(*) |+----------+| 10000000 |+----------+1 row in set (1.34 sec)mysql > select count(DISTINCT(a)) from test1;+--------------------+| count(DISTINCT(a)) |+--------------------+| 10000000 |+--------------------+1 row in set (5.25 sec)上面我将把索引类型更改为主键: ...