mysql explain 字段

时间:2024-03-27 17:35:15

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.常见的索引失效原因比如不符合索引最左匹配,