MySQL 索引失效的具体场景有以下几种:
索引列上的数据不唯一。如果索引列上的数据不是唯一的,则 MySQL 可能无法通过索引快速查找数据,因为它无法确定使用哪一行数据。
索引列上的数据不全。如果在查询中使用的条件不包含索引列的所有数据,则 MySQL 可能无法使用索引。
索引列上的数据过于稠密。如果索引列上的数据非常稠密,则 MySQL 可能无法使用索引,因为它需要扫描太多的数据。
索引被忽略。MySQL 可能会忽略使用索引,如果它认为扫描整张表更加高效。这种情况下,可以通过使用强制索引或者修改查询优化器参数来强制 MySQL 使用索引。
索引被更新