更新rent_contacts SET Contacts_mobile = '11111' WHERE rent_unit_code in(SELECT rent_unit_code FROM rent_unit);
最初のケース:インデックスのない状態
SQL実行:
ベギン;
UPDATE連絡先SET mobile = '11111' WHEREコード((3424342 ')内);
sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');
SQL 2の実行がブロックされ、SQL 1のコミット後、SQL 2を正常に実行できる
結論:インデックスのない状態、テーブルのロック
2番目のケース:条件にインデックスがあり、inステートメントが特定の値である
SQL実行:
ベギン;
UPDATE連絡先SET mobile = '11111' WHEREコード((3424342 ')内);
sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');
SQL 2は通常どおり実行され、SQL 2はSQL 1のコミットに依存しません
結論:条件にインデックスがあり、行がロックされています
3番目のケース:条件にインデックスがあり、inステートメントが複雑なクエリである
SQL実行:
ベギン;
UPDATE連絡先SET mobile = '11111'のWHEREコード入力(ユーザーからのコードの選択、id = 1)。
sql二执行UPDATE連絡先SET mobile = '11111' WHERE code in( '1111');
SQL 2の実行はブロックされ、SQL 1のコミット、SQL 2の通常の実行
結論:条件にはインデックスがあり、inステートメントは不確定値であり、ロックテーブル
転載:https://www.cnblogs.com/2nao/p/9965208.html