mysql中的索引
索引
a. 概念
索引是基于数据库表创建的,它包含一个表中某些列的值以及记录对应的数值(具体是什么数值,要看引擎和索引的种类).
b. 作用
在存储数据时会把数据组织成某种数据结构(通常是B+树,也可是hash结构,这种结构不支持范围查找,所以很少用),查询时可以利用该数据结构的特性提高查询速度。-----但无法提高增删改的效率,会使增删改变慢,因为索引建立之后需要对索引的b+树进行维护,每次增删改都会改变b+树的结构,从而减慢增删改的效率。
c.索引的种类
-
哈希索引:采用哈希算法,存储引擎为memery才使用,把索引列数据换算成哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快,但不适合范围查找和排序。--这个用的比较少
-
聚集索引(innodb)---聚集索引---索引和数据存储在一个ibd文件中:聚集索引通常就是主键索引,如果没有定义主键索引,但有唯一索引且非空的一个字段或字段集(多字段唯一),则使用该唯一索引作为聚集索引,如果没有这样的唯一索引,则会自动产生一个隐藏的索引为gen_clust_index,一个表只能有一个聚集索引,而非聚集索引可以有很多个
-
-
主键索引:由主键约束所产生的索引.
-
唯一索引:由唯一约束所产生的索引。unique--唯一索引可能是聚集索引,也可能是非聚集索引
-
-
非聚集索引---索引和数据分开存储,索引文件myi存储了索引和机械地址
-
单值索引:用create index 索引名字 on 表名(字段)。
-
复合索引:基于某些列建立索引。create index 索引名 on 表名(字段1,字段2);
-
全文索引:类似于solr,把一篇篇文章存储在某一列,搜索时使用全文索引。很少用,>=5.6版本的mysql才支持。
-

浙公网安备 33010602011771号