mysql数据库建表常规注意事项

目录

 

1.字段类型选择注意事项:

2.创建索引的注意事项

3.使用索引要注意的事项


1.字段类型选择注意事项:

1). 主键 使用bigint类型  选择snowflake建立全局唯一ID;

2). 能使用int类型的,尽量使用int类型。如“状态“,“代码” 选择SMALLINT类型;

3). 使用varchar类型的,可选择varchar(255);占用存储空间按实际长度+1

4). 货币类字段,使用Decimal和Numric类型表示,decimal(10,2)  共有10个数字,其中小数2位。存储空间10+2。java对应类型Bigdecimal, 加减乘除使用了英文的加减乘除, 即add, substract, multiply和divide,比较大小用compareTo方法, 比较结果有-1, 0, 1, 分别表示小于, 等于, 大于; 对于0, 可以使用BigDecimal.ZERO表示! 参见(https://blog.youkuaiyun.com/weixin_34007906/article/details/85991111

    (还可将币单位改为小单位,从而将小数转化为整数)。

5) 参见 Mysql的建表规范与注意事项 https://blog.youkuaiyun.com/w384694051/article/details/76998112 

  • 当字段可选择多个类型时(比如生日字段,可以用时间戳,即整数类型,可以用字符串 类型,也可以用日期 类型):整数、二进制 优于 日期 优于 字符串。

mysql字段类型与java类型对应表

MySQL Type NameReturn value ofGetColumnClassNameReturned as Java Class
BIT(1) (new in MySQL-5.0)BITjava.lang.Boolean
BIT( > 1) (new in MySQL-5.0)BITbyte[]
TINYINTTINYINTjava.lang.Boolean if the configuration property tinyInt1isBit is set to true(the default) and the storage size is 1, orjava.lang.Integer if not.
BOOL, BOOLEANTINYINTSee TINYINT, above as these are aliases forTINYINT(1), currently.
SMALLINT[(M)] [UNSIGNED]SMALLINT [UNSIGNED]java.lang.Integer (regardless if UNSIGNED or not)
MEDIUMINT[(M)] [UNSIGNED]MEDIUMINT [UNSIGNED]java.lang.Integer, if UNSIGNEDjava.lang.Long
INT,INTEGER[(M)] [UNSIGNED]INTEGER [UNSIGNED]java.lang.Integer, if UNSIGNEDjava.lang.Long
BIGINT[(M)] [UNSIGNED]BIGINT [UNSIGNED]java.lang.Long, if UNSIGNEDjava.math.BigInteger
FLOAT[(M,D)]FLOATjava.lang.Float
DOUBLE[(M,B)]DOUBLEjava.lang.Double
DECIMAL[(M[,D])]DECIMALjava.math.BigDecimal
DATEDATEjava.sql.Date
DATETIMEDATETIMEjava.sql.Timestamp
TIMESTAMP[(M)]TIMESTAMPjava.sql.Timestamp
TIMETIMEjava.sql.Time
YEAR[(2|4)]YEARIf yearIsDateType configuration property is set to false, then the returned object type isjava.sql.Short. If set to true (the default) then an object of type java.sql.Date (with the date set to January 1st, at midnight).
CHAR(M)CHARjava.lang.String (unless the character set for the column is BINARY, then byte[]is returned.
VARCHAR(M) [BINARY]VARCHARjava.lang.String (unless the character set for the column is BINARY, then byte[]is returned.
BINARY(M)BINARYbyte[]
VARBINARY(M)VARBINARYbyte[]
TINYBLOBTINYBLOBbyte[]
TINYTEXTVARCHARjava.lang.String
BLOBBLOBbyte[]
TEXTVARCHARjava.lang.String
MEDIUMBLOBMEDIUMBLOBbyte[]
MEDIUMTEXTVARCHARjava.lang.String
LONGBLOBLONGBLOBbyte[]
LONGTEXTVARCHARjava.lang.String
ENUM('value1','value2',...)CHARjava.lang.String
SET('value1','value2',...)CHARjava.lang.String

2.创建索引的注意事项

频繁作为查询条件的字段适合建立索引;
查询中与其它表关联的字段,外键关系建立索引;
单值和复合索引,优先选择复合索引;
查询中排序的字段,排序字段若通过索引去访问将大大提高查询速度;
查询中统计或者分组字段要建立索引;
where条件里用不到的字段不创建索引;
对于单键索引,尽量针对当前查询过滤性好的索引;
在选择组合索引的时候,当前查询中过滤性最好的字段在索引字段的顺序中,位置越靠前越好;
在选择组合索引的时候,尽量选择可以能够包含当前查询中的where子句中更多字段的索引;
尽可能通过分析统计信息和调整查询的写法来达到选择合适索引的目的;
频繁更新的字段不要建立索引;

3.使用索引要注意的事项

对于字符串索引,一定要加引号;
如果索引了多列,要遵循最佳左前缀原则;
不要在索引上做任何操作,会导致索引失效,而转向全表扫描;
存储引擎不能使用范围条件右边的列;
不等于、or都会使索引失效;
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值