Index索引

  1. 数据库存储引擎:

  • InnoDB:-mysql默认,支持事务,支持外键,支持表锁与行锁

  • MySIA:支持行锁

  • Memory: 在内存中存储,因此可存储的大小有限

  1. 什么是Index?index是一种用来帮助mysql高效查找数据的数据结构,在数据库之外,数据库维护的满足特定算法的数据结构。

  1. index的优缺点?

优点:

  • 提高数据的检索效率,降低Io成本

* 通过索引列进行排序,降低排序的成本,降低Cpu的消耗

缺点:

  • index索引需要占用额外空间

  • 虽然index提高了查询效率,但是降低了更新修改的效率

  1. 索引类型

  • B-树索引:所有节点都存放数据

  • B+树索引:MySQL只有叶子节点存放数据,其他节点仅起到索引数据的作用。且B+树的叶子节点形成了一个单向链表。

  • Hash索引:MySQL,Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,< ,...),无法利用索引完成排序操作,但是查询效率高

  1. 主键索引、唯一.. 、普通索引、全文索引

  1. 聚集索引、二级索引

  1. 索引失效:

  • 不满足最左前缀法则

  • 使用范围查询<、>右侧缩影失效

  • 索引列运算

  • 字符串不加引号

  • 头部模糊查询

  • or连接查询时,左侧有索引右侧没有

  1. 前缀索引:对长度较长的字符串来说

  1. 覆盖索引:避免使用Select *——不需要回表查询,提高查询效率

SQl优化:


  1. 插入:

  • 批量插入

  • 手动控制事务,start transaction/begin commit callback

  • 主键顺序插入

  1. 主键优化方案

  • 主键顺序插入 如果乱序: 两个概念:页分裂、页合并

  1. order by优化:

  • mysql的排序方式:

  • using fileSort:全表扫描后在排序缓冲区sort buffer中排序

  • Using index:有序索引顺序扫描后直接返回有序数据——操作效率高

  1. limit优化:

存在问题,分页时越往后查询,分页查询的效率越低

解决:覆盖+子查询

slelect * from aa a1,(select id from aa orderby id limit20000,10) a2 where a1.id=a2.id

  1. count优化:

Count(id) Innodb需要一行行的读出然后累计计数

解决:自己计数

count(*)~~count(1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值