テーブルにまったく同じ列があるとすると、次のようになります。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
INSERT INTO NEW_TABLE (SELECT * FROM OLD_TABLE);
COMMIT ;
Wistar's に基づいた追加の説明を含めました コメント。ここで使用できる読み取りレベルは次のとおりです。
- コミット済みを読む :一貫性のある(ロックされていない)読み取りに関して、Oracleに似た分離レベル:同じトランザクション内であっても、一貫性のある各読み取りは、独自の新しいスナップショットを設定および読み取ります
- コミットされていないものを読む :SELECTステートメントは非ロック方式で実行されますが、以前のバージョンの行が使用される可能性があります。したがって、この分離レベルを使用すると、そのような読み取りは一貫していません。これはダーティリードとも呼ばれます。それ以外の場合、この分離レベルはREADCOMMITTEDのように機能します。
- 繰り返しの読み取り :これは、InnoDBのデフォルトの分離レベルです。一貫性のある読み取りの場合、READ COMMITTED分離レベルとは重要な違いがあります。同じトランザクション内のすべての一貫性のある読み取りは、最初の読み取りによって確立されたスナップショットを読み取ります。この規則は、同じトランザクション内で複数のプレーンな(ロックされていない)SELECTステートメントを発行する場合、これらのSELECTステートメントは相互にも一貫していることを意味します。
- シリアル化可能 :このレベルはREPEATABLE READに似ていますが、自動コミットが無効になっている場合、InnoDBはすべてのプレーンSELECTステートメントを暗黙的にSELECT ... LOCK INSHAREMODEに変換します。自動コミットが有効になっている場合、SELECTはそれ自体のトランザクションです。したがって、読み取り専用であることがわかっており、一貫性のある(ロックされていない)読み取りとして実行され、他のトランザクションをブロックする必要がない場合は、シリアル化できます。 (他のトランザクションが選択した行を変更した場合にプレーンSELECTを強制的にブロックするには、自動コミットを無効にします。)
これがお役に立てば幸いです。