image.png :::warning **Using where**表示MySQL服务器将存储引擎返回行以后再应用where条件过滤。 :::

    使用了索引,MySQL可能会锁住一些不需要的数据。如果不能使用索引查找和锁定行的话,问题可能会更糟糕,MySQL会做全表扫描并锁住所有的行,而不管是不是需要。

    InnoDB在二级索引上使用共享(读)锁,在聚簇索引上使用排他(写)锁。这消除了使用覆盖索引的可能性,并且使得select for updatelock in share mode或非锁定查询要慢得多。