MYSQL必知必会

一、mysql innodb存储引擎的特点:

1,支持事务(OLTP);

2,高并发(MVCC);

3,行锁;

4,外键;

5,非锁定读;

二、伪列、分页

1、ROWID,如果数据库表没有设置主键,innodb会自动添加rowid主键,但是查询不到;如果有主键,则rowid默认等于主键。row_id,oracle的伪列,可以查询出来。
2、limit优化:(limit 10,10   limit 800000,10)

偏移量越大,数据库越慢,执行效率越差

三、索引使用:

1,谨慎使用索引,一般建议一张表上建索引的个数不超5个为最好;

2,不在索引列做运算,索引列上不能使用函数,否则索引失效;

3,使用正确的数据类型去查询;

4,字符字段考虑使用前缀索引

5,不使用外键;额外开销,高并发的时候容易引起死锁;

5,创建复合索引时,将等值连接的列放在前面,一个范围连接的列放最后面

6,查询时类型不匹配,不走索引,相当于全表扫描;

7,like查询左边有%,不走索引;

8,排序会把sql的执行,及用到的索引给打乱,甚至不用索引(mysql执行顺序:先排序,再范围,最后索引);

执行计划:

ALL >  index  >  range  >  ref   >  eq_ref  >  const  >  system  >  NULL
四、建表

1,建表必须知道主键、存储引擎和默认字符集,建议主键自增;

2,列的数据类型依据“更小更简单”原则;

3,定长用char,变长用varchar并指定适当的长度;
五、其他

1、开发中不建议使用大字段;
2、数字型  VS  字符串型索引:数字型更高效;查询更快;占用空间更小;

3、UNOIN Unoin all
 Unoin去重,使用union all 效率高
4、同一字段OR改为IN

     不同字段的OR改为Unoin

5、count(*)性能消耗非常大;

总结:

尽量不在数据库做运算;

复杂运算移到程序端CPU;

尽可能简单的应用MySQL;

数据库优化主要优化IO;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值