索引分类:
单值索引:一个索引只包含一个列,一个表可以有多个单值索引
唯一索引:索引列的值必须唯一,但允许空值
复合索引:一个索引包含多列
索引语法:
CREATE [UNIQUE] INDEX indexName ON tableName(column1,column2.....) # 创建索引
ALTER tableName ADD [UNIQUE] INDEX [indexName] ON (column1,column2...) # 创建索引
DROP INDEX [indexName] ON tableName # 删除索引
SHOW INDEX FROM tableName # 查看索引
索引结构:
B+树:3层的b+树可以表示上百万数据,所以上百万的数据查找只需要3次IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO,那么总共需要上百万次IO。
还有Hash等结构,后续不全
哪些字段应该创建索引:
主键(自动创建唯一索引)
频繁作为查询条件的字段
用于关联表的字段
排序字段
查询中统计或分组的字段
覆盖索引:也就是索引覆盖
查询数据时直接从索引中读取数据,不需要读取数据行。也就是查询列被所建的索引覆盖