分类

  • 主键索引
  • 唯一索引
  • 常规索引
  • 全文索引

InnoDB 引擎中,根据索引的存储形式,又可以分为:

  • 聚集索引
  • 辅助索引

聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引
  • 如果不存在主键,将使用第一个(非空)唯一索引作为聚集索引
  • 如果没有主键,或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索引

语法

1
2
3
4
5
6
7
8
# 创建索引
CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name ( index_col_name, ... );

# 查看索引
SHOW INDEX FROM table_name ;

# 删除索引
DROP INDEX index_name ON table_name;

性能分析

1
2
3
4
5
6
7
8
9
10
11
12
# 查看执行频率
SHOW GLOBAL/SESSION STATUS LIKE 'Com_______';

# 查询语句的耗时情况
select @@have_profiling;
SET profiling = 1;
show profiles;
show profile for query query_id;
show profile cpu for query query_id;

# 查看执行计划
explain mysql_query;

索引失效

  • 运算操作
  • 字符串不加引号
  • 模糊查询(头部模糊匹配)
  • 数据分布影响