索引失效时机

  1. 模糊查询以 “%”开头索引失效,因为不确定 % 的值

  2. 使用 or 的时候会失效,如果使用 or 要求条件两边都要有索引,才会使用索引,如果其中一边有一个字段没有索引,那么另一个字段上的索引也会失效。

  3. 使用复合索引的时候,没有使用第一索引列查找

    1. 最左前缀原则

    2. MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。

  4. 在where当中索引列参加了运算,索引失效

  5. 在where列中使用了函数

  6. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

  7. 如果mysql估计使用全表扫描要比使用索引快,则不使用索引