MySQL索引的基本语法
定义主键约束、外键约束、唯一约束等约束时,相当于同时在指定列上创建了一个索引。
创建表时
create table table_name(
[col_name data_type] [unique | fulltext | spatial...],
[unique ...][index | key][index_name] (col_name [length], ...)
);create table user (
id int not null,
name char(30) not null,
unique index uniqueIdx(id)
);表已经存在时
第一种
alter table table_name
add [unique ...][index | key][index_name](col_name [length], ...);
alter table user add unique index uniqueIdx(id);第二种
删除索引
查看MySQL中的索引
索引的生效
只要创建了索引,就一定会生效吗?
不一定,当使用组合索引时,如果没有遵循最左匹配原则,索引不生效。
例如,创建id,name,age 组合索引时:
id、(id, name)、(id, name, age)查询,索引生效age、(age, name)查询,索引不生效这样判断索引是否生效
使用
explain关键字。

possible_keys:MySQL在搜索记录时可选用的各个索引key:MySQL实际选用的索引
怎么避免索引失效?
使用组合索引时,遵循最左匹配原则
不在索引列上进行任何操作,比如:计算、函数、类型转换
尽量使用覆盖索引索引列,尽量不使用不等于条件
!= / <>、通配符开头的模糊查询(like %abc)、or作为连接条件字符串加单引号(不加可能会发生索引列的隐式转换,导致索引失败)
Last updated