mysql写好的因素

1有主键

否则多次读写更多离散,增加更多io

mysql复制环境,若选择brb模式会update全表;导致延迟

2数据长度

够用前提,越短越好,消耗更少的存储空间;需要排序时候,消耗更少的内存

3每张表增加createtime 和updatetime两个时间

表示创建时间和更新时间;便于运维;判断哪些是老数据,便于归档,用来做自 定义的差异备份

4索引很重要

innodb行锁基于索引,如果没有索引导致1读取时,全表扫描;2修改时,全表记录锁

5所有where的条件都加上引号

避免潜在的类型隐式转换的类型;避免个别条件失效的sql语法错误;

6不select *

减少不必要的io;提高可以利用覆盖索引的几率

7避免sql注入的风险

所有用户的输入值都要做过滤;用prepare做预处理;利用sql_mode作品限制

8LIKe查询中不要用%的通配符在左侧;否则无法使用索引

9sql中尽量不要有运算;where字句中最好不要有函数

10 关于join

满足业务下 优先使用inner join 用优化器自动选择驱动表

11关于explain

关键业务上线前用explain确定执行计划;提前分析slow query log;explain中如果有using temporary,filesort或者type=all的时候应该优化;

可以提供1表的读取顺序2如何读取的表3那些可能用到的索引和实际用了那些索引4表示如何引用的5查询油画系从每个表中预计读取的记录数6其他信息 是否使用了内存表是否引发排序等

12 分而治之

把同一对象的 不用属性根据使用的多少可以建立成两个表 ;

把不变的数据一个表,变得一个表;计数单独一个表;

13 索引

确保 where on group by order by 这些字段在索引上

确保join的字段上有索引;而且索引类型保持一致;否则增加转换开销

索引覆盖:当select 所有的字段都在索引记录中,则不需要从表中查询数据直接从索引中返回

14 索引的效率

与执行计划相关的索引(出现在possible key)索引的数量与sql的执行消耗时间成正比,与执行计划无关的索引,不会影响sql的执行效率;表的大小与索引对于sql的执行效率的影响,没有直接的关系;与本条语句执行相关的index的数量(posible key)会影响最终的效率

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值