码迷,mamicode.com
首页 > 数据库 > 详细

MySQL中的索引

时间:2018-08-31 13:20:23      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:数据表   index   str   必须   最好   否则   style   分词   提高   

一 索引基础

1、定义:

  在MySQL中,索引(index)也叫做“键(key)”,他是存储引擎用于快速找到记录的一种数据结构,可以提高查询效率。

  对查询性能优化的最有效手段就是索引优化。

2、工作原理:

  在MySQL中,索引是在存储引擎层实现的,而不是在服务器层。

  在MySQL中,存储引擎用类似的方法使用索引,其先在索引中查找对应的值,然后根据匹配的索引记录来找到对应的数据行,最后将数据结果集返回给客户端。

3、索引类型:

(1)常规索引:

  也叫普通索引(index或key),一张数据表中可以有多个常规索引。

  一般没有指明索引的类型,都是指常规索引。

(2)主键索引 - primary key

  简称主键,提供唯一性约束。一张表中只能有一个主键。

  被标志为自动增长的字段一定是主键,但是主键不一定是自动增长。

  一般把主键定义在例如编号之类的字段上,其数据类型最好是数值。

(3)唯一索引 - unique key

  提供唯一性约束。一张表中可以有多个唯一索引。

(4)全文索引 - Full Text

  可以提高全文搜索的查询效率,一般使用Sphinx替代,但是Sphinx不支持中文检索。

  Coreseek是支持中文的全文检索引擎,也称作具有中文分词功能的Sphinx。

  实际项目中,用到的是Coreseek。

(5)外键索引 - Foreign key

  简称外键,外键会自动和对应的其他表的主键关联。

  外键的主要作用是保证记录的一致性和完整性,但是由于外键的效率不是很高,所以并不推荐使用外键。

  注意:只有InnoDB存储引擎的表才支持外键。如果要删除父类中的记录,必须先删除子表中的额相应记录,否则会出错。

4、索引的方法

主要有以下几种:

(1)B-Tree索引:

  如果没有特别指明类型,那一般说的就是B-Tree索引。B-Tree对索引是顺序存储的,因此和适合查找范围数据。

  因为存储引擎不在需要进行全表扫描来获取需要的数据,故能够加快访问数据的速度。

  注意:不同的存储引擎以不同的方式使用B-Tree索引,性能也各不相同。

     例如:MyISAM使用前缀压缩技术使得索引更小,但InnoDB则按照原始的数据格式存储索引。

      再如:MyISAM通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行。

 

  

 

资料来源:MySQL索引详情

MySQL中的索引

标签:数据表   index   str   必须   最好   否则   style   分词   提高   

原文地址:https://www.cnblogs.com/LYliangying/p/9565211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!