选择数据的类型
更⼩的通常更好
简单为好
尽量避免存储null
整数类型
对于计算和存储来说INT(1)和INT(20)是相同的。
实数类型
带有⼩数部分的数字,建议只指定类型,不指定精度。
字符串类型
varchar可变⻓度字符串类型,使⽤1或2字节记录字符串⻓度。
char是固定⻓度,经常修改的情况适⽤于char,因为没有内存碎⽚。
最好分配合适的空间
使⽤VARCHAR(5)和VARCHAR(200)显然⼩的更加节省空间。
BLOB和TEXT类型
BLOB使⽤的是⼆进制数据,没有排序规则和字符集,但
Text类型有字符集和排序规则。不能使⽤索引进⾏排序。
在数据库中存储图像
尽量不要在数据库中存储图像数据,⽽是使⽤单独的图像对象存储,并跟踪图⽚的位置。
MySQL schema设计上的陷阱
太多的列,MySQL的⾏数据转换与列的数量有关。
太多的连接,
null不是虚拟值
MySQL会对null进⾏索引,尽量不使⽤null,使⽤其他值替代null。
⼩结:
简⽽⾔之,让事情尽可能⼩⽽简单是⼀个好主意。
请记住以下指导原则:
● 尽量避免在设计中出现极端情况,例如,强制执⾏⾮常复杂的查询或者包含很多列的表设计(很多的意思是介于有点多和⾮常多之间)。
● 使⽤⼩的、简单的、适当的数据类型,并避免使⽤
NULL,除⾮确实是对真实数据进⾏建模的正确⽅法。
2● 尝试使⽤相同的数据类型来存储相似或相关的值,尤其是在联接条件中使⽤这些值时。
● 注意可变⻓度字符串,它可能会导致临时表和排序的全⻓内存分配不乐观。
● 如果可能的话,尝试使⽤整数作为标识符。
● 避免使⽤⼀些传统的MySQL技巧,例如,指定浮点数的精度或整数的显示宽度。
● ⼩⼼使⽤ENUM和SET类型。它们很⽅便,但也可能被滥⽤,有时还很棘⼿。另外