削除
- DELETEはDMLコマンドです。
- DELETEステートメントは行ロックを使用して実行され、テーブル内の各行は削除のためにロックされます。
- where句でフィルターを指定できます
- 条件が存在する場合、指定されたデータを削除します。
- 操作は個別にログに記録されるため、削除するとトリガーがアクティブになります。
- ログを保持するため、切り捨てよりも低速です。
- ロールバックが可能です。
切り捨て
- TRUNCATEはDDLコマンドです。
- TRUNCATE TABLEは常にテーブルとページをロックしますが、各行はロックしません。
- WhereConditionは使用できません。
- すべてのデータを削除します。
- 操作は個々の行の削除をログに記録しないため、TRUNCATETABLEはトリガーをアクティブ化できません。
- ログを保持しないため、パフォーマンスが向上します。
- ロールバックが可能です。
- DELETEとTRUNCATEはどちらも、TRANSACTIONとともに使用するとロールバックできます(TRUNCATEはSQL Serverでロールバックできますが、MySQLではロールバックできません)。
- 自動インクリメントのPKがある場合、切り捨てるとカウンターがリセットされます
http://beginner-sql-tutorial.com/sql-delete-statement .htm