如图,我建了一张这样的表,从mysql可优化的角度来说,是否规范?我把所有字段都not null,然后给了默认值
我先说下int的各种大小类型:
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
首先status这个字段用int有点浪费了,使用tinyint就行;像其它的你可以根据你自己的大小来判断使用什么;至于时间我推荐int,用DATETIME的话比int类型占用资源更大,读取速度也慢,你存时间戳就行;
status 只存状态值的话可以改为TINYINT
days、count、send_count可以根据实际业务调整成MEDIUMINT,
比如days字段,MEDIUMINT在UNSIGNED下范围是0~16777215 ≈ 4万多年,有效天数我想绝对够用了,节省存储空间。
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
关于你的问题,楼上都回答了,我贴下我待过的公司的mysql建表规范,参考下。