Firebird 2.5.1 Embedded を使用しています。私はほぼ200k行でテーブルを空にするために通常のことをしました:
delete from SZAFKI
出力は次のとおりです。16 秒かかりますが、これは許容できません。
Preparing query: delete from SZAFKI
Prepare time: 0.010s
PLAN (SZAFKI NATURAL)
Executing...
Done.
3973416 fetches, 1030917 marks, 116515 reads, 116434 writes.
0 inserts, 0 updates, 182658 deletes, 27 index, 182658 seq.
Delta memory: -19688 bytes.
SZAFKI: 182658 deletes.
182658 rows affected directly.
Total execution time: 16.729s
Script execution finished.
Firebird には TRUNCATE キーワードがありません。クエリは PLAN NATURAL を使用するため、次のように手動でクエリを PLAN しようとしました。
delete from szafki PLAN (SZAFKI INDEX (SZAFKI_PK))
しかし、Firebird は「指定されたプランでは SZAFKI_PK を使用できません」と言います (主キーです) 質問は、テーブルを効率的に空にする方法です。ドロップして再作成することはできません。