索引的优点


1.1 *索引的优点*

​ 大大提高系统查询效率

​ 第一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

​ 第二、可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。

​ 第三、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

​ 第四、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

​ 第五、通过使用索引,可以在查询的过程中,使用查询优化器,提高系统的性能。

1.2 *索引的缺点*

创建索引和维护索引要耗费时间, 随着数据量而增加

占用物理内存,

当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

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

经常用到的(搜索,排序,范围,连接,where)

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

用到的概率很低

MySQL中的索引种

B-Tree索引,顾名思义,就是所有的索引节点都按照balance tree的数据结构来存储。B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。

B-tree中,每个结点包含:

1、本结点所含关键字的个数;

2、指向父结点的指针;

3、关键字;

4、指向子结点的指针;

对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。各结点的关键字和可以拥有的子结点数都有限制,规定m阶B-tree中,根结点至少有2个子结点,除非根结点为叶子节点,相应的,根结点中关键字的个数为1m-1;非根结点至少有[m/2]([],向上取整)个子结点,相应的,关键字个数为[m/2]-1m-1。

B-tree有以下特性:

1、关键字集合分布在整棵树中;

2、任何一个关键字出现且只出现在一个结点中;

3、搜索有可能在非叶子结点结束;

4、其搜索性能等价于在关键字全集内做一次二分查找;

5、自动层次控制;

由于限制了除根结点以外的非叶子结点,至少含有M/2个儿子,确保了结点的至少利用率,其最低搜索性能为:

img

其中,M为设定的非叶子结点最多子树个数,N为关键字总数;

所以B-树的性能总是等价于二分查找(与M值无关),也就没有B树平衡的问题;

由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点;删除结点时,需将两个不足M/2的兄弟结点合并。

1.1 *Full-text索引*

Full-text索引就是我们常说的全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like查询的低效问题。只能解决’xxx%’的like查询。如:字段数据为ABCDE,索引建立为- A、AB、ABC、ABCD、ABCDE五个。


文章作者: Kexuan Shi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kexuan Shi !
评论
  目录