赞
踩
目录
索引是依靠某些数据结构和算法来组织数据的存放方式,其最终目的是快速引导用户查询检索出所需要的数据。如果不使用索引,那么mysql数据库在查询数据时,就只能够一条一条的去比对,直到找到我们需要的数据,这样不仅浪费了大量的时间,同时也大大的消耗了系统不必要的性能。
使用索引的场景:
表的主键、外键必须有索引
数据量大的表需要有索引
经常与其他表连接的表,连接字段上应该有索引
经常被查询的字段
优点:
大大加快数据检索的速度
将随机I/O变成了顺序 I/O (B+树的叶子节点是连接在一起的)
加速表与表之间的连接
缺点:
建立索引需要占用物理空间
创建和维护索引需要花费时间,增删改查时都需要额外时间去维护索引
索引是在存储引擎中实现的,有两种存储引擎:
1. MyISAM和InnoDB:只支持BTREE索引, 也就是说默认使用BTREE,不能够更换
2. MEMORY/HEAP:支持HASH和BTREE索引
1. 主键索引:
不允许重复,不能为空,一个表只能有一个主键索引
2. 组合索引:
多个列值组成的索引,最左侧原则:使用了多个字段的最左侧字段时才能使用索引
3. 唯一索引:
不允许重复,可空,索引列的值必须唯一,如果是组合索引,组合值必须唯一
4. 全文索引:
对文本内容进行搜索
5. 普通索引:
基本的类型,可空
1. 全文索引
一般用于查找文本中的关键字,多在CHAR,VARCHAR,TEXT等数据类型上创建。用来解决如 where name like '%zhang%' 等针对文本的模糊查询效率低下的问题。
2. 哈希索引
用于等值查询,时间复杂度为 o(1), 效率非常高,但不支持排序、范围查询和模糊查询。
3. B+树索引
INnoDB存储引擎默认的索引,支持排序、分组、范围查询、模糊查询,并且性能稳定。
4. 空间数据索引
用于地理数据的存储,相比其他索引,优势在于范围查找。
1.哈希索引
特点:无序
优点: 单值查找快。
缺点:哈希冲突,并且不支持范围查找。
2.B+树
特点:有序
对其他树的优势:
简单来说,前面的几种树都有缺点。
平衡树:极限情况会退化成链表,就没有意义了。
红黑树:索引的瓶颈=>io=>平均下来就是树的高度=>红黑树的高度太高相对B+树来说太高。
B树:数据会放在非叶子节点,树的高度因此也比B+树高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。