1,MySql 里面非 GROUP BY 的字段也可以出现在 SELECT 里面,MSSql 不行
## 以下语句 MySql 合法,将取分组后的第一条
SELECT T.a FROM T GROUP BY (T.b)
2,执行 DELETE FROM 删除表中的数据,数据文件大小并不会变化,MySql 只是将数据标记为已删除
DELETE FROM [table]
OPTIMIZE TABLE [table]
3,可以使用 uuid 作为数据的主键,uuid 可以作为分布式的通用唯一标识符(Universally Unique Identifier)
SELECT UUID()
- uuid 是 当前时间 + 时钟序列 + 全局唯一机器识别号(优先网卡 MAC 地址)
- uuid 的缺陷
- 因为 uuid 是时间在前面,所以前面变动很快,然而 InnoDB 存储数据是以主键排序的,因为 uuid 生成的不连贯,所以导致插入效率低,且占用磁盘空间大(大量空的存储碎片,页分裂)
- uuid 结果字符串过长,格式是
a3404b6c-6096-11eb-9f20-0242ac120002
,即固定的CHAR(36)
- 解决 uuid 缺陷的方法
- Virual Generated Columns,只将数据保存在数据字典(表的元数据)中
- Stored Generated Columns,将数据持久化到磁盘
如果不指定的话,默认是虚拟字段