
NulL,如果不是特别的需要null值,一般设为不为空,因为MysqL对null的索引比较复杂datetime和timestamp都可以存储时间,精确到秒。但是timestamp只是用datetime的一半存储空间,而且会根据时区变化,具有特殊的自动更新能力整数类型tinyint(8位)smallint(16位)mediumint(24位)int(32位)bigint(64位)数据范围```-2^(N-1)~2^(N-1)整数计算一般使用bigint对于存储和计算来说int(1)和int(20)没有区别实数类型实数是带有小数部分的数字float、double(可以指定数据宽度:double(18,9)表示数据一共18位,小数点后面保留9位),但是要避免指定数据精度,MysqL已经抛弃了指定浮点数精度与整数显示宽度的特性,虽然还可以继续使用,但是最好不要使用MysqL抛弃的这些特性。decimal支持精确计算,可以存储比bigint还大的数据。但是cpu不支持decimal的计算(由算法解决),cpu原生支持浮点运算字符串类型varchar用于存储变长的字符会额外使用1或2个空间记录字符串的长度字符长度大于255个时,使用2个空间记录,否则使用1个char存储定长的字符char格式会删除字符后面的空格,但前面的不会,例如输入ABC__,但是只会输出ABC。但是varchar会保留原有格式对于定长的数据,无论它是固定的还是会变化的,只要长度固定就使用char,例如MD5加密后额密码,定长的char不容易产生碎片存储Y这个字母,char需要1个空间,varchar需要2个binary和varbinary用来存储二进制字符串二进制字符串存储的是字节码不是字符注意若存储HELLO,使用varchar(6)比使用varchar(200)更好。最好的策略是只分配真正需要的空间混合使用范式与反范式范式的优点: *** 作速度更快、减少数据重复、表占用空间小、数据冗余小范式的缺点:常常需要关联反范式的优点:避免关联反范式的缺点:最差的时候要全表扫描总结
以上是内存溢出为你收集整理的第四章—数据库与数据优化全部内容,希望文章能够帮你解决第四章—数据库与数据优化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)