关于mysql建表规范

https://img4.mukewang.com/5c8f67de000180e108000204.jpg

如图,我建了一张这样的表,从mysql可优化的角度来说,是否规范?我把所有字段都not null,然后给了默认值

慕沐林林
浏览 406回答 5
5回答

RISEBY

我先说下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类型占用资源更大,读取速度也慢,你存时间戳就行;

梵蒂冈之花

那三个时间不应该是INT的应该是DATETIME 即使你存的是时间戳也应该是个TIMESTAMP的

动漫人物

status 只存状态值的话可以改为TINYINTdays、count、send_count可以根据实际业务调整成MEDIUMINT,比如days字段,MEDIUMINT在UNSIGNED下范围是0~16777215 ≈ 4万多年,有效天数我想绝对够用了,节省存储空间。

森栏

状态这种字段一般在tinyint(1)和enum中选,个人喜欢tinyint时间用datetime时默认值请给1000-01-01 00:00:00
打开App,查看更多内容
随时随地看视频慕课网APP