索引失效

143 阅读1分钟

索引在以下情况下可能失效:

  1. 对索引列使用函数、表达式或计算: 如果在查询条件中对索引列使用了函数、表达式或计算,数据库可能无法充分利用索引。例如,对索引列使用了 SUBSTRCONCATSUMCOUNTAVG 等函数。

    SELECT * FROM table WHERE SUBSTR(column, 1, 3) = 'abc';
    
  2. 隐式转换: 当在查询条件中使用了隐式转换,可能导致索引失效。例如,如果索引列是字符串类型,但在查询时不使用引号括起字符串,数据库可能进行隐式转换,导致无法使用索引。

    SELECT * FROM table WHERE column = 123; -- 隐式转换可能导致索引失效
    
  3. LIKE 条件中使用通配符 % 开头:LIKE 查询中,如果通配符 % 出现在查询条件的开头,索引可能无法有效使用,因为无法直接进行前缀匹配。

    SELECT * FROM table WHERE column LIKE '%abc%'; -- 索引可能失效
    
  4. 负向查询(NOT LIKE): 对于 NOT LIKE 查询,数据库可能无法有效使用索引,因为需要匹配所有不满足条件的记录。

    SELECT * FROM table WHERE column NOT LIKE 'abc%'; -- 索引可能失效