MySQLのリファレンスマニュアルでは、ギャップロック[1]について、こういう説明と例が取り上げられています。

一意のインデックスを使用して一意の行を検索することで行をロックするステートメントでは、ギャップロックは必要ありません。...たとえば、id カラムに一意のインデックスが設定されている場合、次のステートメントで使用されるのは id の値が 100 の行に対するインデックスレコードロックだけとなり、ほかのセッションがそのレコードの前にあるギャップに行を挿入するかどうかは問題ではなくなります。

SELECT * FROM child WHERE id = 100;

id にインデックスが設定されていなかったり、一意でないインデックスが設定されていたりすると、このステートメントで先行するギャップがロックされます。

一方、後述の説明のInnoDB のさまざまな SQL ステートメントで設定されたロックでは、こういう文が書いてあります。

SELECT ... FROM は一貫性読み取りであり、データベースのスナップショットを読み取り、トランザクションの分離レベルが SERIALIZABLE に設定されなければロックを設定しません

後者(ロック無し)と前者(インデックスレコードロック或いはギャップロックが必要)との表現には、一致しない部分があるようです。何かを間違えたと思いますけど、ご指導のほどよろしくお願いいたします