前言:
- 主键索引不需要创建,系统会自动生成。
- 主键一定是唯一性索引,唯一性索引并不一定主键。
一、索引是什么?
- 索引是帮助MySQL高效获取数据的数据结构。
- 索引往往存储在磁盘上的文件中。
- 索引中包括:聚集索引,覆盖索引,组合索引,前缀索引,唯一索引等,默认- 都是使用B+树结构组织索引。
二、索引的优劣势?
优势:
- 检索:可以提高数据检索的效率,降低数据库的IO成本
- 排序:通过索引列对数据进行排序,降低了CPU的消耗
劣势:
- 占磁盘空间
- 降低更新表的效率(更新表的时候吸纳过滤低)
三、索引的分类:
1、单列索引:
- 普通索引:没有任何限制。
- 唯一索引:索引列中的值必须唯一,允许空值。
- 主键索引:特殊的唯一索引,不允许空值。
2、组合索引:
- 在表中的多个字段组合上创建的索引 add index(col1, col2……)。
- 遵循最左前缀原则(最左匹配原则)。
3、全文索引(MyISAM,InnoDB5.6以后)
- 只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。fulltext。
- 优先级最高,先执行。
- 存储索引,决定执行一个索引。