索引使用注意事项:
1.索引列运算
不要在索引列上进行运算操作,否则索引将失效;
2.字符串不加引号
字符串类型使用时,不加引号,否则索引将失效;
3.模糊查询
如果仅仅是尾部模糊匹配,索引将不会失效。如果是头部匹配,索引失效;
4.Or连接的条件
用or分开的条件,如果or前的条件中的列有索引,二后面的列中没有索引,那么涉及的索引都不会被用到。
5.数据分布影响
如果MySQL评估使用索引比全表更慢,则不使用索引。
6.最左前缀法则
如果索引了多列(联合索引),要遵循最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的索引字段失效)。
7.范围查询
联合索引中,出现范围查询(>, <),范围查询右侧的列索引失效。在可以的情况下,尽量换成(>=, <=)。
8.SQL提示
SQL提示是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些认为提示来达到优化操作的目的。 use index, ignore index, force index;
9.覆盖索引
尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少使用select*。
知识小贴士:using index condition:查找使用了索引,但是需要回表查询数据
using where, using index:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据。
10.前缀索引
语法
create index idx_xxxx on table_name(column(n));
前缀长度
11.单列索引与联合索引
单列索引:即一个索引只包含单个列
联合索引:即一个索引包含了多个列
在业务场景中,如果存在多个查询条件,考虑针对查询字段建立索引时,建议建立联合索引,而非单列索引。