2011-09-13 3 views
3

これは、パフォーマンスが向上し、エラーが発生しないため、Androidのsqliteのテーブルからすべての行を削除する原因となります。すべてのクエリまたはドロップクエリを削除する

DELETEクエリまたはDROPテーブルと再生成TABLE

DELETE QUERYがドロップので、より良いoption.whyである私の知識を1として、私はこのpost

it is more efficient to drop table and re-create it; and yes, You can use "IF EXISTS" in this case 

DELETE FROM will cause SQLite to visit individual rows unless those rows have triggers, so it's generally reasonably efficient. 


edited after 1 answer post 

As the Droping the table using drop table query then internally delete query was used? As in one answer post 

答えて

3

sqliteクエリごとに私は答えを見つけました。 sqliteでは、Truncation Optimizationを使用しているため、where句を省略するとテーブルを削除してテーブルを再作成すると、すべての行を削除するよりもはるかに高速です。

は、ここでその

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

http://www.sqlite.org/compile.html#omit_truncate_optimization

+0

はいためのリンクです。 SQLiteの既定のビルドでは、DELETEステートメントにWHERE句がなく、トリガーのないテーブルで操作されている場合、テーブルを削除して再作成することによってDELETEが発生する最適化が行われます。表の削除と再作成は、表の内容を行ごとに削除する方が通常ははるかに高速です。これは「切り捨て最適化」です。 –

0

からこれを発見しましたテーブルは内部的に削除クエリを使用します。ドロップクエリを使用する場合は、テーブルを再生成する必要があります。これはさらにもう1つのプロセスです。

関連する問題