把数据转换为在内存中Tree(树形结构)。_MySQL的数据类型|高性能MySQL

02fb790ab9833ba4e5e561458e2a4dec.png

图片放在下面

    • 选择优化的数据类型
      • 原则
        • 简单
        • 尽量避免NULL
        • 更小
      • 整数
        • 整数
          • TINYINT(8)
          • SMALLINT(16)
          • MEDIUMINT(24)
          • INT(32)
          • BIGINT(64)
          • 类型
          • unsigned(不允许负数,并且把正上限提高了一倍)
          • signed
        • 存储地址
          • 内存
          • 磁盘
        • 实数
          • DECIMAL(8)
          • 用于保存精确的小数
          • MySQL4.1以及早期版本
          • 对decimal值执行浮点运算,会因为丢失精度而导致奇怪的结果,在这些版本中,decimal仅仅是存储类型。
          • MySQL5.0
          • 支持精确的数学运算,服务器自身进行了decimal运算,因为CPU并不支持对她进行直接运算。
          • FLOAT(4)
          • DOUBLE
      • 字符串类型
        • VARCHAR
          • 保存了可变长度的字符串
          • 比固定长度类型占用更少的存储空间(只占用自己需要的空间)
          • 例外是使用ROW_FORMAT=FIXED创建的MyISAM表,它为每行使用固定长度的空间,可能会造成浪费
          • 当最大长度远大于平均长度,并且很少发生更新的时候,建议使用VARCHAER。解决了碎片化问题
        • CHAR
          • 固定长度
          • 适合存储长度相似的值,比如用户密码的MD5
          • 适合经常改变的值
          • 对于很短的列,效率高于varchar
        • BLOB
          • 以二进制的形式保存大量数据
          • TINYBLOB
          • SMALLBLOB
          • BLOB
          • MEDIUMBLOB
          • LONGBLOB
          • mysql把blob和text当做有实体的对象来处理,存储引擎通常会特别的保存它们,InnoDB在它们较大的时候回使用单独的“外部”存储区域来进行保存,每个值在行里面都需要1到4字节,并且还需要足够的外部存储空间来保存时实际的值。
        • TEXT
          • text和blob唯一的区别就是blob保存的是二进制数据,没有字符集和排序规则,但是text有字符集和排序规则。
          • Memory存储引擎不支持blob和text类型,尽可能避免使用blob和text,如果不能避免,可以使用order by substring(column,length)把这些值转换为字符串,让它们使用内存中的临时表。
        • ENUM
          • 使用enum代替字符串类型
        • 日期和时间类型
          • DATETIME
          • 保存大范围的值,从1001到9999年,精度为秒(YYYYMMDDHHMMSS)与时区无关,使用了8字节存储空间
          • 2008-01-16 22:37:08
          • TINESTAMP
          • 保持了自1970年一月一日午夜(格林尼治标准时间)以来的秒数,和UNIX的时间戳相同,只占用了4字节的存储空间,表示1970-2038年。
        • 位集数据类型(Bit-Packed Data Types)
          • BIT
          • Image
          • 使用bit要小心,尽量避免
          • 如果只想保存一位的true/false,另一个选择是创建一个可空的CHAR(0)列,它能保存空值(NULL)或0长度的值(空字符串)
          • SET
          • 如果要保存许多true/false值,可以考虑把许多列合并为SET数据类型,它在MySQL内部是以一系列位表示的。有效的使用了存储空间,主要缺点是改变列定义的代价比较高(需要ALTER TABLE),通常来说也不能在SET列上使用索引进行查找。
          • Image
      • 选择标识符
        • 整数类型
          • 通常是标识符的最佳选择,因为速度快,并且能使用AUTO_INCREMNET
        • 字符串类型
          • 注意随机值的字符串
          • Image
      • 特殊类型的数据
        • Image
    • 索引基础知识
      • 索引死帮助MySQL高效获取数据的数据结构,当数据很大,性能下降,这时候索引就很重要了
      • 小心自动生成的框架
        • 为什么要小心自动生成的框架.rtfd
      • MySQL只能高效的搜索索引最左前缀。
      • 索引实在存储引擎层实现的,而不是服务器层。
      • MySQL当前支持的索引类型
        • B-Tree索引

4f03b690169e7e2dc460f5246d5ac38c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值