mysql 军规政策

一、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)或%开头的模糊查询,这样会导致无法命中索引 而进行全表扫描

十八、注意不要过多使用索引,否则对表的更新效率有很大影响,因为要花费大量时间来创建索引

posted @ 2021-01-06 11:29  狭路相逢智者胜  阅读(65)  评论(0编辑  收藏  举报