一、索引是干嘛的
索引就是用来在数据库中加速数据库查询速度的。就和在《新华字典》中的按拼音或者按笔画查字是一样的,通过缩小查询的范围,用最短的时间搜索到满足条件的记录。
二、常见的索引类型
1.普通索引(NORMAL)
普通索引是最常见的索引类型。
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
2.唯一索引(UNIQUE)
唯一索引就是索引列只能是唯一的不可以重复的。
ALTER TABLE `table_name` ADD UNIQUE (`column`)
3.主键索引(PRIMARY KEY)
主键索引就是在建主键的时候自动建的索引。
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
4.复合索引
复合索引就是可以多个索引列组合在一起,但是索引的第一列必须要在sql里,不然就会没用。
ALTER TABLE `table_name` ADD INDEX index_name ( `column1` ,`column2` )
5.全文索引(FULL TEXT)
全文索引就是只能是CHAR,VACHAR,TEXT类型的才能添加的索引。
ALTER TABLE `table_name` ADD FULLTEXT index_name (`column`)
三、常见的索引方法
1.B-Tree
B-Tree是一种平衡的树状数据结构,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。
2.Hash索引
哈希(hash)比树(B-Tree)更快,原因就是Hash索引的工作方式其实就像我们生活中的电话本或者地址簿。想象一下,你有一本电话本,里面记录了每个人的联系方式。为了快速找到某个人的联系方式,电话本不是按照人名首字母或者姓氏笔画排序,而是用了一种特别的方法给每个人编了一个号码(这就是哈希值)。
现在,你想找某个朋友的联系方式,你只需要查看电话本前面的索引(哈希函数),找到这个朋友对应的号码(哈希值)。然后,你直接翻到电话本中对应号码的位置,就能迅速找到这个朋友的联系方式(数据)。
所以,Hash索引就是利用一个特殊的编号方法(哈希函数),给每条数据编一个独特的号码(哈希值)。这样,当你需要找某条数据时,只需要用这个号码(哈希值)就能在固定的位置(固定大小的数组)快速找到它,而不需要一页一页地翻找。这种方法非常快捷,但缺点是,如果两个人的号码(哈希值)相同,你就需要再仔细看一下,确保找到的是你要找的那个人(解决哈希冲突)。
四、单列索引和组合索引
1.单列索引
单列索引就是指索引只包含原表的一个列。在表中的单个字段上创建索引,并且这个索引只根据这一字段进行排序和查找。单列索引没有特别的限制条件,以是普通索引,也可以是唯一索引,还可以是全文索引。
2.组合索引
组合索引就是在数据库中创建一个包含多个列的索引,这些列共同组成了索引键。然后利用多个列的值来排序和查找数据。组合索引能够提高多列查询的性能,单列索引在多列查询就不是很适用了,而且组合索引支持对多个列进行过滤条件,从而提高数据检索速度。组合索引将多个字段值按一定顺序进行排列,并将其作为一个整体存储在B+树结构中,这样能有助于加快复杂查询的速度。