数据库设计的字段选择

本文最后更新于:2 年前

远山

记录数据库设计时,字段设计的一些原则。

数据库设计时,字段如何选择

类型优先级

整形 > date/time > enum char > varchar > blob,text

  1. 字段长度最小
  2. 优先使用定长
  3. 数值型字段避免使用ZEROFILL
  • time:定长运算快,节省时间,考虑时区,写SQL不方便
  • enum:能起到约束值的目的,内部用整形存储,但是使用char联查时,内部需要经历串与值的转换
  • char: 定长,考虑字符集和校对集
  • varchar: 不定长,考虑字符集的转换和排序时的校对,速度慢
  • text/blob: 无法使用内存临时表(排序操作只能在磁盘上进行)

能用整型就不用字符串

  • 整型是定长的,没有没有字符集差异(没有国家和地区差异)。
  • 字符串(char)需要考虑字符集和校对集(比如相同长度的tinyint和varchar(1),tinyint的分组更快)

够用就行,刚刚好就行

大的字段影响内存速度。

内容 字段
年龄 TINYINT UNSIGNED NOT NULL;

VARCHAR(n)中n越小越好。

尽量避免用NULL

NULL不利于索引,也不利于查询。可以在创建字段时使用NOT NULL DEFAULT

char和vachar

  • CHAR:
    • 定长
    • 处理速度更快
    • 费存储空间
  • VARCHAR:
    • 不定长
    • 处理速度较慢
    • 节省存储空间

根据处理速度存储空间做出两者的选择


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!