MYSQL字符类型

MYSQL字符类型

标签(空格分隔): 高性能MYSQL 第四章 schema与数据类型 字符类型


  1. ###VARCHAR和CHAR 值的存储与具体的存储引擎有关,下面以InnoDB为例说明

###1.1. VARCHAR 这长字符串,需要1或2个额外的字节记录字符长度。VARCHAR(10) 11byte,VARCHAR(1000) 1001byte。update时可能使行变得更长,消耗较大。

    适用:
        1. 字符串值的最大长度比平均长度大得。
        2. 列的更新少

###1.2.CAHR

定长字符串。当值不足指定长度时,会以空格填充,所以不能识别末尾处的空格,相当于删除末尾空格。

    适用:
        1. 值短
        2. 所有的值长度接近
        3. 经常变更
        

 VARCHAR(5)、VARCHAR(200)哪个来存储"HELLO"更有优势?
VARCHAR(5)更好,因为MYSQL会分配固定的大小的内存块来保存内部值。尤其是使用(内存、磁盘)临时表进行排序和操作时,会浪费大师内存。
  1. ###VBLOB和TEXT 字符类型:TINGTEXT SMALLTEXT TEXT MEDIUMTEXT LONGTEXT SMALLTEXT TEXT是同义词

二进制类型:TINGBLOB SMALLBLOB BLOB MEDIUMBLOB LONGBLOB BLOB SMALLBLOB是同义词

###2.1. MYSQL把BLOB和TEXT值当作一个独立的对象处理。 值太大时,InnoDB会使用专门的“外部”存储区域进行存储,此时每个值在行内需1~4个字节存储一个指针

###2.2. 只对每列的最前max_sort_length做排序,也可以使用order by substring(cloumn ,length)。

    技巧:使用order by substring减少临时表的空间
  1. ###使用杖举(ENUM)代替字符串 数据实际存储为整数,在表的.frm文件中存在“数字-字符串”的映射,且排序也是按内部整数排序。排序问题可以用order by field([field])解决

转载于:https://my.oschina.net/u/1185976/blog/916950

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值