両方ともID番号がリンクされた2つのテーブルがあります(AllUsers
とAllProfiles
)。ユーザーがボタンを押すと、AllUsers
テーブルに、AllProfiles
テーブルに存在しないIDがあるかどうかを確認して削除します。私はSQLCEの初心者であり、これを一緒にハッキングしました。問題は、テーブル全体を削除し続けることです。どうして?テーブル全体を削除するSQLステートメント
DELETE FROM AllUsers
WHERE EXISTS
(SELECT ID
FROM AllUsers
WHERE (ID NOT IN
(SELECT ID
FROM AllProfiles)))
また、これは数千のレコードを一括削除する効率的な方法ですか? LinqのDeleteAllOnSubmitを試しましたが、遅すぎました。私は上記の2つのテーブルを直接比較しているので、効率的でなければなりません。
EDITを(私が個別に各テーブルの制御を必要とするようカスケードを使用したくない) - SELECT
ステートメントが正しく欠落しているIDを返すので、DELETE FROM AllUsers WHERE EXISTS
部分に何か問題があります。
私が使用して嫌いに。 SQL-CEは既存のものを使用できますか? – MatBailie
@Demsなぜあなたは 'IN'を嫌うの??? :) SQL CEに関しては、私は本当にいずれかの方法を言うことはできません。私がSQL CEの専門家であると言えば、私は嘘をついていただろう(あるいは軽度の詩でさえ)。 –
代替案よりも最適化されていないことがよくあります。そして、JOINできない人たちによって過度に使用されています。人々は '@(@comma_delimited_string_of_chaff)'を試してみましょう。また、最大サイズのデータセットに制限されることもあります。そしてそれはちょうどperrrrrrtyではありません。 – MatBailie