【数据库Mysql】——初识索引

前提


    之前学习SqlServer的时候有学习过索引这个概念,但那个时候只是简单的学习了一

下概念,对索引的特点,以及概念没有深入的认识,直到最近项目中,项目负责人一直

在强调要加索引来提升性能,小编也就顺便用Mysql数据库补充了自己之前的不足之处。


何为索引?


    索引是创建在表上,是对数据库表中一列或多列的值进行排序的一种结构。索引可

以提高查询的速度。


为什么索引可以提高查询速度?


    通过索引,查询数据可以不必读完记录的所有信息,而只是查询索引列。举个例

:索引类似于字典中音序表,想在字典找一个字,不利用音序表,就需要在整本字典

中查找,但是要把拼音提取出来,组成音序表,只需要在几页的音序表中直接查询,节

约时间,提高查询效率,同样提高了数据库的性能。


索引实现原理


    数据在磁盘上以块的形式存储,为了保证对磁盘操作的原子性,访问数据的时候会

一并访问所有的数据块。磁盘上的数据块类似于链表,都包含一个数据项和一个指针,

指针指向下一个节点的内存地址,并且在物理地址上不需要连续存储。很多记录只能做

到按照一个字段排序,所以要查询某个未经排序的字段,就需要使用线性查找,就需要

访问N/2个数据块,其中N指的是一个所涵盖的所有数据块。如果该字段是非键字段(不

包含唯一值),那么就要搜索整个表空间。因此,对于排序的字段,可以使用二分查

找,只需访问log­­2­­n个数据块。这样数据库的性能自然就得到了提升。


索引设计原则


1、选择唯一性索引;

2、为经常需要排序,分组和联合操作的字段建立索引;

   经常需要ORDER BY,GROUP BY,DISTINCT和UNION等操作的字段,如果为建立索引,

可以有效避免排序操作;

3、为常作为查询条件的字段建立索引;

4、限制索引的数目;

    索引的数目并不是越多越好,每个索引都需要占用磁盘空间,在修改表时,对索引

的重构和更新很麻烦。

5、尽量使用数据量少的索引;

    索引值注定会影响查询速度的,例如char(10)类型的字段进行全文检索肯定会比

char(100)类型的字段需要时间短。

6、尽量使用前缀来索引;

7、删除不再使用或者很少使用的索引,减少索引对更新操作的影响。


索引使用的优缺点


   优点


1、提高检索数据的速度;

2、对于依赖关系的子表和父表之间的联合查询,提高查询速度;

3、使用分组和排序子句进行数据查询时,同样可以减少查询中分组和排序的时间;

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


  缺点


1、创建索引和维护索引需要耗费时间,而且时间随数据量的增加而增加;

2、索引需要占用物理空间;

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


总结


    本文的内容主要是关于索引学习过程中的一些理论知识,通过自己的学习以及一些
资料的查找,索引适合应用到需要进行经常查询操作的数据表中,个人认为索引就是把记录按照字段提前进行的排序,然后我们在执行查询操作的时候直接按序检索就可了。其实自己在学习这一部分的知识感觉越深入需要研究的内容非常多,想真正利用好索引
还是需要不断的修炼啊。后续小编会给出索引的一些具体使用方式。

   如有理解偏颇之处,请各位大神不惜赐教,不胜感激!
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mandy_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值