浅谈索引

引言


    作为一名web程序员,和数据库打交道是必不可少的,为了优化查询的效率,我们最常想到的方法应该就是添加索引了,为了能够更好的使用索引,我们应该对它多做一些了解。


索引是什么


    数据库对象的索引其实和书的目录很类似,它的目的就是为了提高从表中检索字段的速度。
    实现原理是特定字段先执行一次排序,然后每次需要指定数据前,先对从索引中查询,因为索引是特殊的数据结构,所以查询速度非常快。

索引类型
    常见的索引类型有三种,全文索引,唯一索引,普通索引.


索引方法
    在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的字段
    主键或者外键
    唯一完整性约束等

选择合适的索引方法


    选择索引的时候,索引类型对应数据的特性,而索引方法则对应查找的方法,如果没有建立正确的索引,那么还不如不建立索引,其实大多数情况下,选择普通索引方法即可,但是存在某些特殊的情况,我们需要特定的索引
    比如说唯一索引,唯一索引或者说更多的是一种约束,当某一字段具有唯一性质时,选择唯一索引,如主键和外键等。
    如果某字段数据比较大,如保存的是某一篇博客的内容,并且改动较少,那么可以建立全文索引,全文索引比较消耗内存空间

尾语


    索引是一种优化查询效率的方法,但是请不要滥用,滥用索引真的还不如不用索引。
   

posted @ 2016-11-18 09:26  crisenchou  阅读(200)  评论(0编辑  收藏  举报