数据库索引

主索引:能唯一标识一条记录,只能由一个字段组成,一个表只能建立一个主索引

候选索引:能唯一标识一条记录,但不一定只有一个字段组成,一个表可建立多个

普通索引:无限制,可任意建立,不能标识唯一激励,目的只是为了加快查询速度

唯一索引:和普通索引相似,但索引列的值必须唯一,但允许有空值

 

单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。

组合索引:即一个索包含多个列。

 

搜索码:用于在本间中查找记录的属性或属性集

稠密索引:文件中的每个搜索码都有一个索引项

稀疏索引:只为搜索码某些值建立索引项

聚集索引:在innoDB中 聚集索引只有一个 即主键索引,非叶子节点存储主键 叶子节点存储这条记录的所有信息。
非聚集索引:即普通索引,非叶子节点存储设置索引字段的值,叶子节点存储当前记录对应的主键ID。
回表:通过非主键索引进行查询,select所要获取的字段不能通过非主键索引获取到,需要通过非主键索引获取到的主键,从聚集索引再次查询一遍,获取到所要查询的记录,这个查询的过程就是回表。 所以我们查询的字段 如果有联合索引的话.比如 select id, A,B where A = "a" and B="b"。表中有联合索引(A,B) 叶子节点也会存储id,就不需要回表。但是如果select A,B,C 因为C不在联合索引上,所以只能先查询到id 再回表 通过主键索引去查询。

使用B树或者B+树实现索引的原因:

  B树出度大,高度小,读取的少,快

 索引失效的情况

1.like" %__" 百分号在前

2 引用复合索引里非第一位置的索引列

3.字符型字段为数字时,where条件里不加引号

4对索引列进行计算,建立函数索引

5 对索引字段判断是否为null或者某个值

 

posted @ 2017-06-15 12:18  雪浪snowWave  阅读(332)  评论(0编辑  收藏  举报