mysql索引 b+树

作者: 联系我们  发布:2019-10-16

1、B+树基本概念

  B+树的语言定义相比较复杂,简单的讲是为磁盘存取设计的平衡二叉树

图片 1

  网络经典图,石榴红p1 p2 p3代表指针,灰白的代表磁盘,里面包罗数据项,第一层17,35,p1就象征小于17的,p2就象征17-35之间的,p3就代表大于35的,但是须要专一的是,第三层才是动真格的的数据,17、35都不是真实数据,只是用来划分数据的!

2、为何使用B+树

  B+树有啥收益大家非要使用它吧?那就先要来拜访mysql的目录

 

  2.1mysql索引

    试想一下在mysql中有200万条数据,在一向不树立目录的状态下,会全部实行扫描读取,这几个刻钟花费是老大恐惧的,而对于大型一点的网址以来,到达那么些数据量很轻松,不容许那样去规划

    在大家创立数量库表的时候,大家都晓得三个事物叫做主键,通常来说数据库会活动在主键上开创索引,那称为主键索引,来探视索引的分类吧

    a.主键索引:int优于varchar

    b.普通索引(INDEX):最基本的目录,未有限制,加快查找

    c.独一索引(UNUQUE):听名字就精晓,须要全数类的值是举世无双的,可是允许有空值

    d.组合索引:

1 CREATE INDEX name_age_address_Index ON `student`(`name`, `age`, `address`);

    在这里地其实富含八个目录,聊到组合索引,应当要讲最左前缀原则

 


    最左前缀原则:

      大家现在创建了索引x,y,z,Index:(x,y,z),只会走x,xy,xyz的查询,比方:

1 select * from table where x='1'
2 select * from table where x='1' and b='1'
3 select * from table where x='1' and b='1' and c='1'

      倘若是x,z,就只会走x,注意一种极其意况,select * from table where x='1' and y>'1' and z='1',这里只会走xy,因为在经历xy的筛选后,z不能够担保是一动不动的,可索引是不改变的,因而不会走z


 

    e.全文索引(FULLTEXT):用于搜索内容十分长的稿子之类的很好用,假使创设普通的目录,在蒙受like='%xxx%'这种气象索引会失效

1 ALTER TABLE tablename ADD FULLTEXT(col1, col2)
2 SLECT * FROM tablename WHERE MATCH(col1, col2) AGAINST(‘x′, ‘y′, ‘z′)

    那样就能够将col1和col2里面含有x,y,z的笔录整个抽出来了

    

    索引的去除:DORP INDEX IndexName ON `TableName`

  

    索引的优劣点:

      1、在数据量非常宏大的时候,创设目录有扶助大家抓实查询功效

      2、在操作表的时候,维护索引会扩充额外开支

      3、不泛滥使用索引,成立多了目录文件会膨胀一点也不慢

 

  2.2B+树的亮点

    问询上面的模型后,试想一下,200W条数据,尽管尚未建设构造目录,集会场全数扩充围观,B+树仅仅用三层组织得以代表上百万的数额,只供给贰遍I/O!那进步是真的皇皇啊!

    因为B+树是平衡二叉树,在不断的加码数量的时候,为了保全平衡大概必要做多量的拆分操作,因此提供了旋转的职能,不知道旋转提出去补一下树的基础知识

    B+树插入动画(来自

图片 2

3、索引优化

  1、最好左前缀原则

  2、不要在目录的列上做操作

  3、like会使索引失效产生全表扫描

  4、字符串不加单引号会变成索引战败

  5、减弱使用select *

图片 3

  参照这里,写的很好   

 

总结:

  sql语句怎么用,未有规定必得怎么查,对于数据量小,有时候没有需求新确立目录,依照早晚的实际处境来思考

    

 

本文由全球彩票历史版本发布于联系我们,转载请注明出处:mysql索引 b+树

关键词:

上一篇:查询优化之
下一篇:没有了