【mysql】 mysql什么情况下不走索引,会发生索引失效?

  1. 使用函数或表达式进行查询

有时候,在查询条件中使用函数或表达式可能导致索引失效。让我们看一个例子:

SELECT * FROM users WHERE UPPER(name) = 'JOHN';

在这个查询中,我们使用了UPPER函数将name列的值转换为大写,并与字符串'JOHN'进行比较。由于函数UPPER的存在,MySQL无法直接使用索引进行匹配,而是需要对name列的每一行应用函数,然后再进行比较。这会导致索引失效,并且可能导致全表扫描。

为了避免索引失效,可以修改查询条件,将函数应用于常量而不是索引列,如下所示:

SELECT * 

你可能感兴趣的:(sql,数据库,mysql)