84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
我们做的一个项目,把建表的sql语句发给DBA审核,DBA提出了几个意见,其中一条是不建议使用tinyint字段,那个字段type的值可能是1或者2,所以我们用tinyint,以前都是这样用啊。
为什么DBA不推荐使用tinyint呢?
业精于勤,荒于嬉;行成于思,毁于随。
各有各的想法,我比较建议用tinyint,它只占用一个字节,使用enum不灵活,比如定义了1是男,2是女,如果我想显示1是男人,2是女人,就不方便了。
tinyint
enum
而在MYSQL上,是不建议用NULL,NULL是占用四个字符,记录多了,这个是不必要的损耗,查询的时候,where field is null 或者 field is not null,这样的查询,效率也不是很高的,把字段设为default '',这样可以where field = '' or field != '',或者直接不允许为空NOT NULL。
NULL
where field is null
field is not null
default ''
where field = '' or field != ''
NOT NULL
半吊子DBA呗,可能不知道从哪本书上看来的东西,我们公司DBA还不允许字段为NULL呢,更奇葩的都有。
这和当初C语言编程不允许用goto一样,半吊子“专家”
type 用 1,2 本身就不是一种好的设计。时间一久,总是需要翻看代码才知道含义。使用 enum 类型,并给每个类型起个合适的名字会好很多。
type
但是如果这个字段需要关联查询,那么不建议使用,性能会有比较严重的衰减。
说java连mysql的时候,不认识tinyint,只识别0和1
用tinyint挺合理的。别听DBA瞎说。
各有各的想法,我比较建议用
tinyint
,它只占用一个字节,使用enum
不灵活,比如定义了1是男,2是女,如果我想显示1是男人,2是女人,就不方便了。而在MYSQL上,是不建议用
NULL
,NULL
是占用四个字符,记录多了,这个是不必要的损耗,查询的时候,where field is null
或者field is not null
,这样的查询,效率也不是很高的,把字段设为default ''
,这样可以where field = '' or field != ''
,或者直接不允许为空NOT NULL
。半吊子DBA呗,可能不知道从哪本书上看来的东西,我们公司DBA还不允许字段为NULL呢,更奇葩的都有。
这和当初C语言编程不允许用goto一样,半吊子“专家”
type
用 1,2 本身就不是一种好的设计。时间一久,总是需要翻看代码才知道含义。使用enum
类型,并给每个类型起个合适的名字会好很多。但是如果这个字段需要关联查询,那么不建议使用,性能会有比较严重的衰减。
说java连mysql的时候,不认识tinyint,只识别0和1
用tinyint挺合理的。别听DBA瞎说。