来自 产品测评 2019-11-03 10:43 的文章
当前位置: 118kj开奖现场 > 产品测评 > 正文

mysql索引 b+树

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卡塔 尔(英语:State of Qatar):用于搜索内容相当短的篇章之类的很好用,假如创设普通的目录,在蒙受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语句怎么用,未有规定必得怎么查,对于数据量小,不时候不需求新确立目录,根据早晚的其实际景况形来构思

    

 

本文由118kj开奖现场发布于产品测评,转载请注明出处:mysql索引 b+树

关键词: