mysql索引(INDEX)定义:

  • 帮助mysql提高查询效率的数据结构;

优点:

  • 加快访问数据的查询速度;

缺点:

  • 维护索引需要消耗数据库资源;
  • 所索引要占用磁盘空间;
  • 当对表数据进行查询增删改查的时候, 需要维护索引, 速度也会收受到影响;

mysql索引的分类:

innodb:

  • 主键索引
    • 设定主键后,数据库会自动建立索引,innodb为(聚簇索引);
  • 普通索引(单值索引、单列索引):
    • 一个索引只包含单个列,一个表可以有多个单列索引(age index);
  • 唯一索引:
    • 索引列的值必须唯一,但可以允许有空值(只能存在一个null);
    • 主键和唯一区别:主键不能为空!!!
  • 复合索引:
    • 一个索引包含多个列;
    • 最左包含原则,所以在查询过程中,mysql会动态的调整查询的字段顺序;

myIsam:

  • 全文索引(FULL TEXT,MYISAM引擎才有):
    • 在定义索引的列上支持值得全文搜索(类似于 es),允许在这些索引列插入重复的值和空值;
    • 全文索引可以在(CHAR、VARCHAR、TEXT)类型上使用;

索引底层原理: