引言mysql
做为一名web程序员,和数据库打交道是必不可少的,为了优化查询的效率,咱们最常想到的方法应该就是添加索引了,为了可以更好的使用索引,咱们应该对它多作一些了解。程序员
索引是什么web
数据库对象的索引其实和书的目录很相似,它的目的就是为了提升从表中检索字段的速度。
实现原理是特定字段先执行一次排序,而后每次须要指定数据前,先对从索引中查询,由于索引是特殊的数据结构,因此查询速度很是快。
索引类型
常见的索引类型有三种,全文索引,惟一索引,普通索引.sql
索引方法
在mysql数据中,经常使用的索引方法有B-Tree索引,哈希索引
哈希索引,是把使用哈希函数,映射到哈希表上,这种查找数据的方式空间复杂度是O(n),时间复杂度是O(1);
可是哈希索引只能对某一特定数据进行查找,没有办法查询到某一数据段集合所须要的数据。(ps:innoDB与MyISAM不支持hash索引,因此通常直接选择B树索引便可)
B-Tree索引,要想了解B-Tree索引,那么首先你就不得不了解B-Tree这种数据结构,它是一种多路平衡搜索树,能够对区间进行查找,在B-Tree中,全部的数据都保存在叶节点,进行区间查找的时候,首先找到区间最小值,而后找到最大值,在这之间全部的数据即为查找的数据
什么状况下用什么索引数据库
常常查询的字段,或者说老是在where字句中出现
order by或者group by的字段
主键或者外键
惟一完整性约束等
选择合适的索引方法数据结构
选择索引的时候,索引类型对应数据的特性,而索引方法则对应查找的方法,若是没有创建正确的索引,那么还不如不创建索引,其实大多数状况下,选择普通索引方法便可,可是存在某些特殊的状况,咱们须要特定的索引
好比说惟一索引,惟一索引或者说更多的是一种约束,当某一字段具备惟一性质时,选择惟一索引,如主键和外键等。
若是某字段数据比较大,如保存的是某一篇博客的内容,而且改动较少,那么能够创建全文索引,全文索引比较消耗内存空间
尾语函数
索引是一种优化查询效率的方法,可是请不要滥用,滥用索引真的还不如不用索引。
优化