一、索引的使用原则:
1、最左前缀法则(针对于联合索引查询)
创建的索引:
create index idx_user_pro_age_sta ON tb_user(profession,age,status);
查询语句:
运用explain命令可以查看以上查询是否用到索引:
第一、二、三条:几个字段都用到索引
第四、五个:就没有用索引去查
导致结果:查看explain中type字段,可以看到性能比较低
2、范围查询
优化:用>=、<=代替>、<
3、索引列运算
前提:phone字段添加了索引
执行上面的explain语句,看到type
值为all
;全表查询,性能很低,没有用到索引
4、字符串不加引号
5、模糊查询,头部模糊匹配(查询时的like语句)
上面的前一个会用到索引,后两个就不会用到索引
6、or连接的条件:or前后的字段都需要是添加了索引的
7、数据分布影响
8、SQL提示
use index:建议使用
ignore index:忽略指定
force index:强制使用
9、覆盖索引
需要查询时尽量使用能一次查询出需要信息的索引。 聚集索引,返回一列的数据 辅助索引,返回主键id和索引值
示例:
上面的第一个和第二个就可以查找一次得到数据
第三个就需要回表查询,才能得到全部的信息:
第一次根据索引Arm,查到Arm和id值
需要再根据id去查找gender
10、前缀索引:需要对比较长的字符串创建索引时,截取前一部分进行索引,节约索引空间
语法:
create index idx_xxx on table_name(column(n))
n:表示前几个字符串
11、单列索引和联合索引