https://qiita.com/kinpira/items/f4606c4a19cfbe82c607
MySQLでは `select ... for update` や `update ...` で行ロックをかけるには必ず INDEX が必要。
対象レコードの検索にインデックスが使われない場合はテーブルロックになる。
これはインデックスが使われた検索がされればよく、インデックスと完全に一致した項目を使って検索しなければならないわけではない。
Oracleやpostgresは同様にINDEXを貼られていない列を条件にしても行ロックされる。
SQL Serverは行ロックを指定するヒントはあるが、ロックテーブル数が多くなる場合はDB側の判断でテーブルロックになる場合がある。