类型 | 占用存储空间 | 存储范围 |
---|---|---|
TINYINT | 8 | -27~27 |
SMALLINT | 16 | -215~215 |
MEDUIMINT | 24 | -223~223 |
INT | 32 | -231~231 |
BIGINT | 64 | -263~263 |
比较 | VARCHAR | CHAR |
---|---|---|
存储内容 | 存储可变长字符串 | 存储定长字符串 |
存储空间 | 列的最大长度小于255字节,则使用1个字节记录字符串长度,否则使用2个字节 | 根据字符串长度分配足够空间 |
适合场景 | 字符串列的最大长度比平均长度大得多 ; 列的更新很少,没有碎片问题;使用了像UTF-8这样复杂的字符集,每个字符集都是用不同字节存储 | 适合存储很短的字符串,或者所有值都接近同一个长度 |
注意点 | UPDATE比原来更长时,数据库会做额外工作CHAR会根据需要采用空格进行填充以方便比较 |
比较 | BLOG | TEXT |
---|---|---|
区别 | 存储二进制字符;无字符集和排序规则 | 有字符集和排序规则 |
相同点 | MYSQL把BLOG和TEXT当作单独对象处理,当BLOG和TEXT值太大时,Innodb会使用专门外部区域存储,每个值在行内用1~4个字节存储一个指针,然后再外部存储实际的值 |
比较 | DATETIME | TIMESTAMP |
---|---|---|
范围 | 1001~9999年 | 保存1970年1月1日午夜以来的秒数,和Unix时间戳相同,只能表示1970~2038年 |
精度 | 秒 | 秒 |
格式 | 将日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关 | 默认NOT NULL,默认为当前时间 |
存储空间 | 8个字节 | 4个字节 |
缓存表 | 表示存储那些可以比较简单地从schema其它表获取(但获取速度比较慢)数据的表 汇总表 | 保存使用 GROUP BY 语句聚合数据的表
物化视图实际上是预先计算并且存储在磁盘上的表,可以通过各种各样的策略刷新和更新 Mysql不支持原生物化视图 这里推荐开源工具 Flexviews
ALTER TABLE操作是新建一张表,将旧表所需数据查出插入到新表中,然后删除旧表,这种操作有时会持续数小时
原则是创建一个新的frm文件替换原来的frm文件
TIP:会有很大风险,不是官方操作,做之前先备份数据