mysql优化(自我记录)
分类:
文章
•
2024-08-05 14:19:58
字段
- 尽量使用tinyint【1 字节 (-128,127) (0,255) 】、smallint【2 字节 (-32 768,32 767) (0,65 535)】、mediumint【3 字节 (-8 388 608,8 388 607) (0,16 777 215) 】作为整数类型;int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个东西基本没有意义,除非你对字段指定zerofill
- varchar的长度只分配真正需要的空间
- 尽量使用TIMESTAMP(4个字节)而非DATETIME(8个字节)
- 单表不要有太多字段,建议不超过20个
- 避免使用null字段,很难查询优化且占用额外索引空间,可用0代替
索引
- 索引并非越多越好,根据查询有针对的创建,在where和order by命令上涉及的列建立
- 避免对字段进行null判断,将导致引擎放弃使用索引而进行全表扫描
- 值分布很少的不建立索引,如性别
- 不用外键,用程序约束
- 字符字段最好不做主键
sql
- sql语句尽可能简单,大语句拆小语句,一条大sql可能堵死整个库
- or用in代替
- 避免%x式查询,会不使用索引,x%使用索引
- 避免使用!=或<>,会放弃使用索引,全表扫描
- 避免使用函数和触发器
未完,待续。。。。。