索引是一种数据结构,一旦建立了索引后,数据库中查询优化器使用索引来快速定位数据,然后就无需扫描表中给定查询的每一行了
普通索引:
最基本的所有类型,而且没有唯一性之类的限制
创建索引:create index 索引的名字 on 表名
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( […], INDEX [索引的名字] (列的列表) ); 可重复,
唯一索引:
这种索引和普通索引基本相同,但有一个区别:索引列的所有制只能出现一次,必须唯一。
可以为空。
主键索引:
主键索引是一种唯一的所有,但是它必须指定为“PRIMARY KEY”
每个表只能有一个主键。主键索引不能为空。
联合索引:(最左前缀)
通常我们在建立联合索引的时候,也就是对多个字段建立索引,我们可以会选择自己查询的优先级,最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。