-
普通索引:最基本的索引。
-
组合索引:多个字段上建立的索引,能够加速复合查询条件的检索。
-
唯一索引:与普通索引类似,但索引列的值必须唯一,允许有空值。
-
组合唯一索引:列值的组合必须唯一。
-
主键索引:特殊的唯一索引,用于唯一标识数据表中的某一条记录,不允许有空值,一般用primary key约束。
-
全文索引:用于海量文本的查询,MySQL5.6之后的InnoDB和MyISAM均支持全文索引。由于查询精度以及扩展性不佳,更多的企业选择Elasticsearch。
索引优化
-
分页查询很重要,如果查询数据量超过30%,MYSQL不会使用索引。
-
单表索引数不超过5个、单个索引字段数不超过5个。
-
字符串可使用前缀索引,前缀长度控制在5-8个字符。
-
字段唯一性太低,增加索引没有意义,如:是否删除、性别。
合理使用覆盖索引,如下所示:
select login_name, nick_name from member where login_name = ?
login_name, nick_name两个字段建立组合索引,比login_name简单索引要更快。