保持するレコードのレコードIDのリストがあります。セットにないすべてのレコードを削除する最良の方法は何ですか?MySQLとADO.NETをC#で使用しています。すべての削除を完了する時間を最小限に抑えたい。
質問する
98 次
1 に答える
1
質問は、それらのIDをどこに持っているかです。彼らは別のテーブルにいますか?それらはファイルにありますか?
IDが少ない場合
DELETE FROM foo WHERE id NOT IN (1, 2, 7, 8, 10);
テーブルからIDを取得する場合
DELETE foo.* FROM foo LEFT JOIN foo_bar ON foo.id = foo_bar.foo_id WHERE foo_bar.foo_id IS NULL;
ファイルにIDがある場合(1行に1つのID)
CREATE TEMPORARY TABLE foo_keep (id INT, PRIMARY KEY (id));
LOAD DATE INFILE '/tmp/myids.list' INTO foo_keep;
DELETE foo.* FROM foo LEFT JOIN foo_keep ON foo.id = foo_keep.id WHERE foo_keep.id IS NULL;
于 2013-01-30T07:54:46.110 に答える