前言:
引用<<高性能mysql>>中的一段话,良好的物理设计和逻辑设计是高性能的基石。
数据库中字段的选择对于mysql性能影响非常之大。具体的大家可以去做下测试。
1.字段避免NULL,如果查询中存在NULL,对于mysql很难优化。
2.char(10)和varchar(10)区别。char表示存储空间占10个字节,如果小于10个字节,则右侧用空格补齐。而varchar则表示最大可用为10个字节。如果小于10个字节,则按实际长度进行存储。如果超出10个字节,则截取10个字节长度进行存储.在UTF8中,1个汉字占3个字节。char最大长度为255字节,varchar最大长度为65535字节。
3.int(1)和int(4)区别。主要是显示宽度上的区别,int(1)显示1,int(4)则显示0001.
4.blog和text字段都是为了存储很大的数据而设计的。blog采用二进制,text采用字符方式。
5.时间有datetime和timestamp。timestamp和时区有关系。timestamp存储空间为4字节,而datatime为8字节。timestamp存储空间效率更高。
6.数据表字段的选择,优先级 数字类型>时间或二进制>字符型
tinyint 1字节 0-255
smallint 2字节 -32767-32767
mediumint 3字节
int 4字节 -2,147,483,647-2,147,483,647
bigint 8字节
date 3字节
datetime 8字节
timestamp 4字节
char m字节
varchar l+1字节
7.浮点数有float,double,decimal.
float为4字节
double为8字节
decimal(m,n) m为全长,n为小数点后位数.decimal(5,2) 123.45