MySQL Table:修订间差异
跳到导航
跳到搜索
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
=== | === 普通表 === | ||
create table test_seq ( | create table test_seq ( | ||
ky int auto_increment, | ky int auto_increment, | ||
val varchar(50), | val varchar(50), | ||
ver | ver json, | ||
primary key(ky) | primary key(ky) | ||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | ||
auto_increment = 10000000 | auto_increment = 10000000 | ||
==== 自增主键 ==== | |||
* auto_increment 为自增主键(该序必须设为主键),一般使用 int(小于 42 亿)。不支持 decimal(10) 这种字段格式 | * auto_increment 为自增主键(该序必须设为主键),一般使用 int(小于 42 亿)。不支持 decimal(10) 这种字段格式 | ||
* auto_increment 也可以使用 double 这种浮点数格式,自增 +1,但可以指定插入 10.1 这种(下一个自增是 11) | * auto_increment 也可以使用 double 这种浮点数格式,自增 +1,但可以指定插入 10.1 这种(下一个自增是 11) | ||
* 一般排序规则默认为:utf8_unicode_ci,ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 默认值是库带过来的 | * 一般排序规则默认为:utf8_unicode_ci,ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 默认值是库带过来的 | ||
==== JSON ==== | |||
=== 分区表 === | === 分区表 === |
2023年10月28日 (六) 20:23的版本
普通表
create table test_seq ( ky int auto_increment, val varchar(50), ver json, primary key(ky) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci auto_increment = 10000000
自增主键
- auto_increment 为自增主键(该序必须设为主键),一般使用 int(小于 42 亿)。不支持 decimal(10) 这种字段格式
- auto_increment 也可以使用 double 这种浮点数格式,自增 +1,但可以指定插入 10.1 这种(下一个自增是 11)
- 一般排序规则默认为:utf8_unicode_ci,ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 默认值是库带过来的
JSON
分区表
最多支持 1024 个分区,同时总数量受库参数打开文件数量限制。
临时表
CREATE TEMPORARY TABLE
- 表结构、数据均存放在内存中
- 临时表在连接使用期间存在,断开时,MySQL 将自动删除表并释放所用的空间
- 不能用 rename 来重命名一个临时表,可以用 alter table 代替
内存表
ENGINE=MEMORY
表结构保存在磁盘上,数据存放在内存中(重启会只有结构)。MEMORY 快大概 20%。
内存表的数据存放在内存中,而内部临时表(如查询时产生的)一般放在内存中,但当内部临时表较大时,会自动转化为磁盘存储。内存表不会自动转换。
- 数据使用 hash 的方式存储,故只支持 = 或 <>
- max_heap_table_size 默认为 16777216,单张表行数超过则报错
- 对于 varchar 等变长类型,使用最大的长度
- 可以有非唯一键
- 不能包含 BLOB 或者 TEXT
- 支持 AUTO_INCREMENT
- 不支持事务,表锁
- 可能会插入延迟,使读取优先