mysql update デッドロック whereの条件をプライマリキーにする

mysqlのupdateでデッドロックが起こっていました。
他のsqlと絡む処理の時に起こっていたようです。

結論. ロックの行数を少なくすることで解決. updateする前にselectでプライマリキーを取得し、 それを使い、絞り込む際の条件をプライマリキーにすることにより、
ロックの行数を1つに減らすことで対処.

修正前.

update テーブル名 set ~~ where カラム = インデックスなしのカラム;
mysql> SELECT trx_rows_locked FROM information_schema.INNODB_TRX;
+-----------------+
| trx_rows_locked |
+-----------------+
|             135 |
+-----------------+

修正後.

select プライマリキー from テーブル名 where ~~;(プライマリキーを取得)
update テーブル名 set ~~ where カラム = プライマリキー;
mysql> SELECT trx_rows_locked FROM information_schema.INNODB_TRX;
+-----------------+
| trx_rows_locked |
+-----------------+
|               1 |
+-----------------+