编辑
编辑
EXPLAIN SELECT * FROM t_user2;
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_name = 'r1'
编辑
CREATE INDEX index_username ON t_user2(user_name);
EXPLAIN SELECT * FROM t_user2 WHERE user_name = 'test';
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_name = CONCAT(user_name,'01'); 索引失效
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_name LIKE 'test';
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_id = 1;
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_id >1 AND user_id < 10;
编辑
EXPLAIN SELECT t1.user_id,t1.user_name,t2.authority
FROM t_user2 AS t1
LEFT JOIN t_authority AS t2 ON t1.authority_id = t2.id
WHERE t1.user_id = 1;
编辑
EXPLAIN SELECT authority FROM t_authority
WHERE id IN (SELECT authority_id FROM t_user2);
编辑
EXPLAIN SELECT * FROM t_user2 WHERE user_id = 1
UNION ALL
SELECT * FROM t_user2 WHERE user_id = 4;
编辑
select_type simple primary ,union
type all const, range, ref
key ref primary index_key
possible key 使用的主键,外键,或者索引字段名
mysql 使用哪些函数会导致索引失效
在MySQL中,使用某些函数会导致索引失效,常见的有以下几种情况:
1.不符合索引最左匹配,
2.对索引列使用了函数运算,使用concat 拼接字符串导致索引失效,这会导致索引失效。
3.使用了不等于(<>, !=)或者范围查询(BETWEEN, >, <, LIKE '%term')并且匹配列值的开始部分,这会使得索引在某些情况下不能被完全利用。
4.使用了不同的collation(排序规则),会导致MySQL无法使用索引进行比较。
5.使用了OR,当OR两边的条件中有一边不是索引字段时,可能会使索引失效。
6.使用了聚合函数,如MAX()或MIN(),如果索引列用于这些函数计算中,索引可能失效。
7.使用了JOIN或者子查询,可能会使得MySQL优化器放弃使用某些索引。
8.常见的索引失效原因比如不符合索引最左匹配,