zoukankan      html  css  js  c++  java
  • VARCHAR、CHAR的选择

      char 固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 255,存储大小是 n 个字节。

      varchar 可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。SQL-2003 中的 varchar 就是 char varying 或 character varying。

      表中只要存在一个varchar类型的字段,那么所有的char字段都会自动变成varchar类型;  
      但是,长度在4以内的char类型不会转换成varchar,反而是长度在4以内的varchar类型会被转换成char类型。  
      也就是说,MySQL设计的时候,也已经考虑了速度和空间的问题,并且也建议不要让这两种定长和变长的类型同处一个表。这个是MySQL的特色。

      1.如果列数据项的大小一致,则使用 char。
      2.如果列数据项的大小差异相当大,则使用 varchar。
      3.如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。
      4.当执行 CREATE TABLE 或 ALTER TABLE 时,如果 SET ANSI_PADDING 为 OFF,则定义为 NULL 的 char 列将作为 varchar 处理。
      5.对于MyISAM表,尽量使用Char,对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此,它的缺点就是占用磁盘空间。
      6.对于InnoDB表,因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分(所有数据行共用一个表头部分,这个标头部分存放着指向各有关数据列的指针),所以使用char类型不见得会比使用varchar类型好。事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利。

  • 相关阅读:
    css深入理解之margin
    position:fixed相对父级元素定位而不是浏览器
    移动web基础
    css多行文本溢出显示省略号
    30丨案例:为什么参数化数据会导致TPS突然下降
    29丨案例:如何应对因网络参数导致的TPS%08呈锯齿状
    28丨案例:带宽消耗以及Swap(下)
    27丨案例:带宽消耗以及Swap(上)
    26丨案例:理解TPS趋势分析
    25丨SkyWalking:性能监控工具之链路级监控及常用计数器解析
  • 原文地址:https://www.cnblogs.com/17too/p/2078552.html
Copyright © 2011-2022 走看看