Skip to main content

索引什么情况下会失效

  • 不使用索引列的前缀
    • 如果查询条件没有包括索引的前缀列(即索引中的第一列),索引可能不会被使用。
  • 使用函数或表达式
    • 当在查询条件中对索引列使用函数、表达式、类型转换等操作时,索引可能不会被使用。例如,WHERE UPPER(column) = 'VALUE'
  • 使用通配符前缀
    • 当查询条件中使用通配符前缀(如 %value)时,索引可能不会被使用,因为通配符前缀无法利用索引的有序性。
  • 对列进行计算
    • 如果查询中对索引列进行计算或运算,索引可能会失效。例如,WHERE column * 2 = 10
  • 不等于(!=)操作符
    • 在某些情况下,使用不等于操作符(!=<>)可能导致索引失效,因为它不适用于某些类型的索引优化。
  • OR条件
    • 使用OR条件连接多个不同的索引列时,优化器可能无法有效地使用索引