索引实践–记录
-
全值匹配
-
最左前缀
如果索引有多列,要遵循最左前缀原则。查询从索引的最左前列开始并且不跳过索引中的列。
-
不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。
-
存储引擎不能使用索引中范围条件右边的列。
即在范围查询条件后面的条件不会使用索引。
-
尽量使用覆盖索引(只访问索引的查询(查询的列都在索引中)),减少使用select * 语句。
-
MySQL在使用不等于(!=或<>)的时候无法使用索引会导致全表扫描。
-
is null,is not null也是无法使用索引。
-
like以通配符开头的(’%xxx’),MySQL索引失效会变成全表扫描操作。
若必须使用’%xxx’,建议使用覆盖索引,查询的字段必须在索引字段中。但当覆盖索引指向的字段是varchar(380)及380以上的字段时,覆盖索引会失效。
-
字符串不加单引号索引失效。
-
少使用or,用它连接时会导致索引失效。