MySql的数据库优化到底优化啥了都(3)

  嘟嘟在上两个文章里面简单粗糙的讲了讲关于MySql存储引擎的一些特性以及选择。个人感觉如果面试官给我机会的话,至少能说个10分钟了吧。只可惜有时候生活就是这样:骨感的皮包骨头了还在那美呢。牢骚两句,北京的夏天真的是热的胶粘。昨天上班儿忙到了晚上11点多,本想着昨儿晚上就把关于数据库优化的文章写完了,今天就能写个关于高并发的。结果嘟嘟这个小屋子就好比那商务大洗浴的汗蒸房一样。嘟嘟昨夜属实有点晕乎。只好晚上锻炼锻炼身体之后看了一集《长安十二时辰》。。。。。话不多说,今天学学关于索引的一些问题。

  索引简介

  优点

 (索引可以大大大大大大的提高查询性能!)

  1.通过创建唯一性索引,保证数据库每一行数据的唯一性

  2.大大加快检索速度

  3.加速表和表之间的连接

  4.减少查询中分组和排序的时间

  5.通过使用索引,在查询的过程中,使用查询优化器,提高系统性能

  

  缺点

  1.创建索引和维护索引消耗时间,这种时间随数据量增加而增加

  2.索引需要占用物理空间,如果建立聚簇索引,占用空间更大

  3.如果表中增删改,索引需要动态维护,降低数据的维护速度

  

  什么字段适合创建索引

  1.常搜索的列上,加快搜索速度

  2.主键列上(MySql 在主键上面默认增加索引)

  3.常用的连接列上(外键),加快连接速度

  4.在经常根据范围进行搜索的列上创建索引,因为索引已经排序,其指定范围是连续的 (a between xxx and xxx  但是不是    in   (5,10,15)这种)可以在a上面加上索引

  5.经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加速查询时间

  6.经常使用where子句中的列上创建索引,加快条件的判断速度

  需要注意的一点是 :比如在 where f1。。。 and f2。。。,那么我们在字段f1或者f2上建立索引是没有用的,只有在f1和f2上同时建立索引才有用

  

  什么样的字段不适合创建索引

  1.查询中很少使用到的,或者参考的列就没必要加索引

  2.数据值相对少的列也不适合。举个极端点的栗子:people 字段有20万条。sex 字段有三条(男,女,不男不女) 在sex字段上面添加索引就是没有用的

  3.大文本数据不应该增加索引。

  4.经常增删改,但是查询比较少的时候就不需要做索引啦

 

  停停停停!因为索引的具体介绍涉及到了关于查找机制(怎么查找一个东西更快的方法)的一些问题,所以嘟嘟先在这里恶补一下查找的相关机制,便于后面继续学习索引种类。

  1.树是什么玩应?(B-Tree ,这 Tree 那Tree的)

  首先一棵小树,必须先有一个根,然后依靠这个根来开枝散叶。就形成了一棵树。

    2.怎么查询快?

  设想一下,如果在查找一大堆数据的过程中,我们能依靠某些办法,去舍弃一些没有必要去查找的东西。那么查找的速度就会比一个一个查的速度快的多。

    基于以上两点,网上给大家扒下来一棵能够让我们查找数据时候快一些的树

  

MySql的数据库优化到底优化啥了都(3)

    6那个地方是根, 258 是叶子,37是分支,235678的值叫做键值

     1. 这棵树的形成是有一定的规则的:

   根的左边(235)叫做左子树,根的右边(78)叫做右子树,首先第一个规则就是右子树的键值要大于根键值,左子树相反。

     2. 给定的这6个数字235678为什么就把根选成6了?因为6是中间数,至于为什么不是5?嘟嘟个人觉得也可以,就这么画呗:

   

MySql的数据库优化到底优化啥了都(3)

  3.我们把每一个数值对应的那个点叫做节点。那么我这棵树也满足上边的那个规则:相对于每一个节点,他左侧的子节点都会比他小,右侧的子节点都会比他大。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzyjgz.html