一、int(1) 和int(11) 都是占用四个字节大小的空间,1 和11 只是列的显示宽度,id int(3) zerofill 不足3位左侧以0补充,所以最好在数据定义的时候选择合适的数据类型,比如可以选择使用TINYINT 类型,只占用一个字节的空间,范围为-127~128
二、不在数据库层做运算,如一些定时任务,可以加在代码的业务逻辑层
三、数据库列的定义不要超过20列
四、单个表的数据行不要超过1000万行
五、varchar 类型是可变长度,一般会设置最大varchar(255) ,没有用完也不会浪费,但是不固定长度会带来其他问题,比如读取效率问题,mysql 无法按照偏移量计算下一条数据的位置,所以查询效率降低
六、不在数据库里存图片
七、避免使用NULL 字段,竟可能的使用 not NULL
八、少用text/blob
九、覆盖记录条数过多不适合建立索引,如性别
十、改善查询,减慢更新
十一、字符字段必须建立前缀索引
十二、不用外键,请用程序控制约束
十三、不用select * 消耗cpu 内存 带宽
十四、or 改写为in or的时间复杂度为n in 为log n
十五、不建议在频繁更新的字段上建立索引
十六、禁止在where 后面使用函数或表达式 ,这样会导致无法命中索引 而进行全表扫描
十七、禁止负向查询 (!=2)或%开头的模糊查询,这样会导致无法命中索引 而进行全表扫描
十八、注意不要过多使用索引,否则对表的更新效率有很大影响,因为要花费大量时间来创建索引