mysql优化(自我学习过程)

字段

  1. 尽量使用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在这里插入图片描述
  2. varchar的长度只分配真正需要的空间
  3. 尽量使用TIMESTAMP(4个字节)而非DATETIME(8个字节)
  4. 单表不要有太多字段,建议不超过20个
  5. 避免使用null字段,很难查询优化且占用额外索引空间,可用0代替

索引

  1. 索引并非越多越好,根据查询有针对的创建,在where和order by命令上涉及的列建立
  2. 避免对字段进行null判断,将导致引擎放弃使用索引而进行全表扫描
  3. 值分布很少的不建立索引,如性别
  4. 不用外键,用程序约束
  5. 字符字段最好不做主键
  6. 使用同类型进行比较,比如 避免varchar与int字段比较,用’11’和’11’比较,11和11比较

sql

  • sql语句尽可能简单,大语句拆小语句,一条大sql可能堵死整个库
  • or用in代替
  • 避免%x式查询,会不使用索引,x%使用索引
  • 避免使用!=或<>,会放弃使用索引,全表扫描
  • 避免使用函数和触发器

写sql的注意点

  • 使用 insert into select from, mysql会从上到下扫描select表内的记录并且加锁,这样一来可能会导致和直接锁表一样的效果;解决办法可以对where条件字段加索引,避免全表扫描,导致锁表,只会锁定符合记录的数据。

未完,待续。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值