4

私のアプリケーションでは、テーブルの内容全体を削除して、何度も補充する必要があります

その場合、私には2つの解決策があります:

1- ドロップ、再作成、テーブルへの入力

"DROP TABLE IF EXISTS TABLE_NAME"

2-中身をすべて取り出して補充する

"DELETE FROM TABLE_NAME"

今、どのソリューションがより効果的ですか?

4

2 に答える 2

7

http://www.sqlite.org/lang_delete.htmlから:

切り捨ての最適化

WHERE が DELETE ステートメントから省略され、削除されるテーブルにトリガーがない場合、SQLite は最適化を使用して、テーブルの各行を個別にアクセスすることなく、テーブルの内容全体を消去します。この「切り捨て」最適化により、削除の実行が大幅に高速化されます。

于 2013-05-15T16:54:15.230 に答える
4
  • このテーブルに一意の 1 ベースの自動インクリメント ID がある場合、テーブルを削除して再作成すると、そのカウンターが 1 にリセットされる可能性がありますが、削除して再入力すると、最後に使用された自動インクリメント値からカウンターが続行されます。
  • WHERE 句を使用せずにテーブル内のすべてを削除すると、テーブルが切り捨てられます。これは非常に高速であり、SQLite がすべての行を個別に削除するプロセスを回避します。

何をするにしても、このテーブルを指す外部キーがある場合は、それらの参照を完全に混乱させないように注意してください。

于 2013-05-15T16:54:24.047 に答える