MySql索引基本

1.什么是索引

    索引用于快速找出在某个列中有一特定值的行。如果不使用索引,需要遍历整张表,表越大查询耗时越大;

    MySQL中的索引的存储类型有两种:BTREE、HASH。具体实现机制参照另一篇博客;

2.索引的优缺点分析和使用原则

   优点:

  •    任意字段可以设置索引
  •    索引可以大大加快查询

 缺点:

  •    创建、维护索引需要额外耗时,并且耗时随数据量明显增加
  •    索引需要占据空间,导致提前达到数据最大上线值
  •    数据增、删、改需要维护索引,维护速度降低

  使用原则:

   1. 更新频繁的表应该避免过度索引,对查询频繁的字段应该创建索引;

   2. 数据量小的表不需要索引;

   3. 不同值少的列上(字段上)不要建立索引,例如学生表的"性别"字段上只有男,女两个不同值,无需设置索引;

3.索引分类

   索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引;

   MyISAM和InnoDB存储引擎:只支持BTREE索引

   MEMORY/HEAP存储引擎:支持HASH和BTREE索引

索引分类 定义 说明
单列索引

普通索引:字段没限制,允许在定义索引列中插入重复值、空值;

唯一索引:索引列中的值必须是唯一的,但允许为空值;

主键索引:索引列值必须唯一,不允许为空

一个索引包含单列,但一张表可以有多个索引
组合索引 表中的多个字段组合上创建的索引 使用组合索引时遵循最左前缀集合
全文索引 在一堆数据中,通过某个关键字等,就能找到该字段所属的记录行 MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引
空间索引 空间索引是对空间数据类型的字段建立的索引, MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON

参考:

 https://www.cnblogs.com/whgk/p/6179612.html

 https://blog.csdn.net/waeceo/article/details/78702584

猜你喜欢

转载自www.cnblogs.com/albertarmstrong/p/9352165.html