MySQL削除データDeleteとTruncate文の使用比較


空きmysqll表の内容にはよくある方法が二つあります。一つはdeleteで、一つはtruncateです。whereパラメータを持たないdelete文はmysql表のすべての内容を削除できます。truncate tableを使ってもmysql表のすべての内容をクリアできます。効率的にはtruncateがdeleteより速いですが、truncateが削除された後にmysqlログを記録しないと、データを回復できません。この構文は、
 
TRUNCATE [TABLE] tbl_name
ここで簡単な例を示します。friendsテーブルのすべての記録を削除したいです。
 
truncate table friends;
deleteの効果はmysqlテーブルのすべてのレコードを一つずつ削除して削除したいです。truncateはmysqlテーブルを保持する構造に相当します。この表を新たに作成しました。すべての状態は新しい表に相当します。文法:delete文の定義。
 
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]
MySQLのこれらの文法はすべて口語と似ています。どの表からデータを削除したいのか、またどのデータを削除したいのかを指摘してください。これで十分です。叙述文を書く時、時間、場所、人物、環境、プロットのいくつかの要素が必要です。例は一番印象的で、問題を一番よく説明します。だから、中途半端で無駄です。直接テーマに入ります。上の文法構成によって、firends表のすべてのuser_を削除したいです。nameはsimaopigの記録に等しいので、次のSQL文が使えます。
 
delete from friends where user_name = 'simaopig';delete
注意事項:文法構造から見れば、udate文法と同じで、where子文は省略できます。でも、これは危険な行為です。なぜなら、where子文を指定しないと、deleteは表の中のすべての記録を削除します。そして、すぐに削除します。泣きたいところがないとしても、時間がありません。すぐに担当者と間違えを認めなければなりません。そして、MySQLログを探して、繰り返し記録します。でも、一度このような経験があったら、きっと印象的だと思います。不思議なことに、私はinnodb及びmysisam上のデータ量の中でインデックスファイルが極めて大きい場合、ほとんど削除できません。解決を待つまとめてもtruncate命令は速いですが、delete命令のように事務処理に対しては安全です。したがって、私たちがtruncate削除を実行したいテーブルが事務処理中であれば、このコマンドは終了し、エラーメッセージが発生します。