数据库设计的字段选择
本文最后更新于:2 年前
记录数据库设计时,字段设计的一些原则。
数据库设计时,字段如何选择
类型优先级
整形 > date/time > enum char > varchar > blob,text
- 字段长度最小
- 优先使用定长
- 数值型字段避免使用
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 协议 ,转载请注明出处!