zoukankan      html  css  js  c++  java
  • mysql 选择优化的数据类型需要注意的几点

    选择优化的数据类型需要注意的几点
    1、尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常占用更少的磁盘、内存、cup缓存,并且处理时需要的cpu周期也更少
    2、简单数据类型的操作通常需要更少的cup周期,例如整型比字符操作代价更低
    3、避免使用null,因为查询中包含可为null的列,对mysql来说更难优化,因为可为null的列使得索引、索引统计和值比较更为复杂,可为null的列会使用更多的存储空间,在mysql中也需要特殊处理,当可为null的列被索引时,每个索引记录需要一个额外的字节。
    4、datetime和timesamp列都可以存储相同类型的数据,但是timestamp只使用datetime一半的存储空间,并且会根据时区变化,具有特殊的自动更新能力,但是timestamp的允许的时间范围会小的多,通常应该尽量使用timestamp,因为它比datetime空间效率更高
     
    5、整数类型有符号和无符号类型使用相同的存储空间并具有相同的性能,因此可以根据实际情况选择合适的类型
    6、浮点类型在存储同样范围的值时,通常比decimal使用更小的空间,float使用4个字符存储,double占用8个字节,相比float有更高的精度和更大的范围,mysql使用double作为内部浮点计算的类型,和整数类型一样,能选择的只是存储类型,mysql使用double作为内部浮点计算的类型,因为需要额外的空间和计算开销,所以应该尽量只在对小树进行精确计算时才使用decimal---例如存储财务数据,但是在数据量比较大的时候,可以考虑使用bigint代替decimal,将需要存储的货币单位根据小数的位数乘以相应的倍数即可。
    7、字符型varchar需要使用1或者2个额外字节记录字符串的长度,如果列的最大长度大于或者等于255字节,则只使用一个字节表示,否则使用2个字节,假设采用lation1字符集,一个varchar(10)的列需要11个字节的存储空间,varchar(1000)的列则需要1002个字节,因为需要2个字节存储长度信息
    适合varchar类型的场景,字符串列的最大长度比平均长度大很多,列的更新很少,所以碎片不是问题,因为varchar列经常update操作可能使行变得比原来更长,这就需要额外的工作。
    char值会根据需要采用空格进行填充,适合存储很短的字符串,或者所有值都接近同一个长度,chanr非常适合存储秘密的md5值,对于经常变更的数据,char也比varchar更好,因为定长的char类型不容易产生碎片,对于非常短的列,char比varchar在存储空间上也更有效率
    8、避免使用blob和text类型
    9、枚举类型最不好的地方是字符串列表是固定的,添加或者删除字符串必须使用alter table
    10、通用的设计实践,在查找表时采用整数主键而避免采用基于字符串的值进行关联
  • 相关阅读:
    Android异步操作总结
    datatable1.9 与datatable1.10以数据差异
    ftk学习记录(形成全屏幕套件)
    linux处置服务Iptables
    Linux课程---9、安装RPM包(RPM的全称是什么)
    Linux课程---8、Linux启动流程
    Linux课程---7、shell技巧(获取帮助命令)
    Linux课程---6、别名管理和网络配置(Linux命令如何记)
    Linux课程---5、常用文件命令和目录命令(创建文件命令)
    英语发音规则---L字母
  • 原文地址:https://www.cnblogs.com/weiluoyan/p/8798045.html
Copyright © 2011-2022 走看看