Mysql 的索引有哪些

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。MySQL索引常用有:主键索引唯一索引普通索引全文索引和组合索引还有一些 单列索引、多列索引的说法.

主键索引:

主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。

唯一索引:

索引列的所有值都只能出现一次,即必须唯一,值可以为

普通索引:
   基本的索引类型,值可以为空,没有唯一性的限制。

全文索引:
   全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过alter tablecreate index命令创建。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。alter table 表名 add FULLTEXT(‘字段名’)

组合索引:

指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。

数据库查询是数据库的最主要功能之一。不管是哪一种方式的索引都是为了,通过给字段添加索引可以提高查询数据的读取速度,提高项目的并发能力和抗压能力。因此数据库系统的设计会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找,这种复杂度为O(n)的算法在数据量很大时速度是有很大程度的下降的。

 

所以不同的数据库会采用不同的的索引方法:主要是因为内核引擎的不一致,所以数据库在数据结构上算法不一样, 常用的有BTree索引,B+Tree索引,哈希索引,全文索引。MySQL中最常见的两种存储引擎分别是MyISAM和InnoDB,FULLTEXT(全文)索引仅可用于MyISAM和InnoDB只有memory(内存)存储引擎支持哈希索引。

BTree 的数据结构,从查阅到的数据,类是于二分法进行查找,采用二分法进行查找是非常节省时间的,如果是数据扩大256倍,用二分法查找也只会是原来时间的8倍.

B+Tree索引是BTree 的变种,在B+Tree结构都在经典BTree的基础上,增加了顺序访问指针指向相邻的叶子。因为B+Tree在空间上的处理会比BTree更优化,所以B+Tree更适合实现外部存储索引结构

全文索引

在大量的文本数据中去寻找少量的几个数据,会大大的增加响应时间,所以如果生成全文索引,生成文本单词清单,就快速很多。

哈希索引

哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置查找该值所在行数据的物理位置,使用散列算法,因此访问速度非常

但是有一点要注意的是,数据库的索引是为了增加数据库查询的速度。但是也增加创建和维护时间,减慢写入速度。

猜你喜欢

转载自www.cnblogs.com/youhongliang/p/12162679.html