-1

保持するレコードのレコードIDのリストがあります。セットにないすべてのレコードを削除する最良の方法は何ですか?MySQLとADO.NETをC#で使用しています。すべての削除を完了する時間を最小限に抑えたい。

4

1 に答える 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 に答える