Mysql索引初识_【数据库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、对表中的数据进行增加,删除和修改的时候,索引需要动态的维护,降低了数据的维护速度;

总结

本文的内容主要是关于索引学习过程中的一些理论知识,通过自己的学习以及一些

资料的查找,索引适合应用到需要进行经常查询操作的数据表中,个人认为索引就是把记录按照字段提前进行的排序,然后我们在执行查询操作的时候直接按序检索就可了。其实自己在学习这一部分的知识感觉越深入需要研究的内容非常多,想真正利用好索引

还是需要不断的修炼啊。后续小编会给出索引的一些具体使用方式。

如有理解偏颇之处,请各位大神不惜赐教,不胜感激!

你可能感兴趣的:(Mysql索引初识)