截断(表)tbl_name
截断表
は,テブルを完全に空にします。これには下降
権限が必要です。
截断表
は論理的に,すべての行を削除する删除
ステトメントや,删除表
および创建表
ステトメントのシケンスに似ています。高性能を実現するために,デ。そのため,ロ,ルバックすることができず,在删除
トリガが起動されることはなく,さらに親子の外部キInnoDB
テブルに対して実行することもできません。
截断表
は删除
に似ているにもかかわらず,DMLステートメントではなくDDLステートメントとして分類されます。MySQL 5.6では;删除
とは次の点で異なります。
切り捨て操作はテーブルを削除して再作成するため,特に大きなテーブルの場合は,行を1つずつ削除するよりはるかに高速です。
切り捨て操作は暗黙的なコミットを発生させるため,ロルバックできません。
セッションがアクティブなテブルロックを保持している場合は,切り詰め操作を実行できません。
截断表
は,InnoDB
テブルに対して,このテブルからの何らかの外键
制約が存在する場合は失敗します。同じテブルのカラム間の外部キ制約が許可されます。切り詰め操作は,削除された行数に対して,意味のある値を返しません。通常の結果は「0行受影响」ですが,これは「情報がない」ものとして解釈してください。
テブル形式ファ
が有効であるかぎり,デ,タまたは,ンデックスファ,tbl_name
.frm截断表
を使用してテブルを空のテブルとして再作成できます。AUTO_INCREMENT
値はすべて,その開始値にリセットされます。これは,通常はシケンス値を再利用しないMyISAM
やInnoDB
にも当てはまります。パティション化されたテブルで使用された場合,
截断表
はそのパティション化を保持します。つまり,データおよびインデックスファイルが削除されて再作成されるのに対して,パーティション定義(.par
)ファルは影響を受けません。截断表
ステトメントは,在删除
トリガを起動しません。
テブルに対する截断表
は,处理程序打开
で開かれたそのテブルのすべてのハンドラを閉じます。
截断表
は,バ邮箱ナリロギングおよびレプリケ,ション目的のときは,删除表
とそれに続く创建表
として,まり,dmlではなくDDLとして扱われます。これは,InnoDB
またはほかのトランザクションストレージエンジン(そのトランザクション分離レベルがステートメントベースロギングを許可しない(读过承诺
または读未提交
)を使用するときは,声明
または混合
ロギングモド使用時にステトメントがログに記録されず複製されなかった事実によります。(Bug #36763)ただし,InnoDB
を使用するレプリケションスレブには依然としてすでに説明した方法で適用されます。
截断表
はパフォーマンススキーマのサマリーテーブルで使用できますが,その効果は行の削除ではなく,サマリーカラムを0または零
にリセットすることです。セクション22.9.9 "パフォマンススキマサマリテブル"を参照してください。