mysql中索引的本质及数据结构

1、索引的本质

索引是数据库管理系统中一个排序的数据结构(类似于书的目录)

2、索引的类型:索引类型:Normal、Unique、Fulltext

3.4、innodb中默认的索引是B+tree,树的深度变小,I/O次数变小,3次I/O就能查询上百万的数据,变动包括page页的分裂和合并,一个磁盘块就是一页,每进行一次I/O就加在一页数据

 

4、1主键索引

聚集索引:不包含空的唯一索引,主键索引即为聚集索引

 

4.2二级索引(二级索引中存的是存储索引和主键值)涉及回表操作

4.2.2聚集索引与非聚集索引(例如主键索引和二级索引)

4.3 索引的使用原则

1、禁止在所有字段上创建索引(浪费存储空间,子节点存储数据冗余)

2、离散度低的字段不要建索引(重复大,离散度低)

3、联合索引最左匹配原则(以建立索引的第一个字段开始匹配)索引abc相当于a,ab,abc

4.4覆盖索引:select的所有字段都包含在用到的索引里面就叫覆盖索引

4.5索引条件下推(ICP)二级索引基本上涉及到索引条件下推

4.6创建索引

 1、在用于where判断、order排序、join的(on)、group by字段上创建索引。
 2、索引的个数不要过多。
 3、区分度低的字段,例如性别,不要建索引。
 4、频繁更新的值,不要作为主键或者索引。
 5、不建议用无序的值(例如身份证、UUID )作为索引。
 6、复合索引把散列性高(区分度高)的值放在前面。 
 7、创建复合索引,而不是修改单列索引。 
 8、过长的字段,建立前缀索引。

4.7什么时候用不到索引

1、索引列上使用函数(replace\SUBSTR\CONCAT\sum count avg)、表达 式
2、字符串不加引号,出现隐式转换 
3、like条件中前面带% 
4、负向查询能用到索引吗?

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值