Bagaimana cara menghapus dari tabel di mana ID ada dalam daftar ID?

91

jika saya memiliki daftar ID (1,4,6,7) dan tabel db di mana saya ingin menghapus semua catatan di mana ID ada dalam daftar ini, bagaimana cara melakukannya?

leora
sumber

Jawaban:

168

Pertanyaan Anda hampir mengeja SQL untuk ini:

DELETE FROM table WHERE id IN (1, 4, 6, 7)
Matti Virkkunen
sumber
@jayarjo: Perbedaan apapun mungkin akan sangat diabaikan, dan saya rasa tidak ada alasan untuk menghapus satu per satu akan menjadi lebih efisien.
Matti Virkkunen
Di sinilah kinerja dapat mencapai kenyamanan. Misalnya saya sudah punya fungsi untuk melakukannya satu per satu di tempat. Tetapi jika ada peluang peningkatan kinerja, saya dapat menulis beberapa kode tambahan, jika tidak, mungkin tidak akan sepadan.
jayarjo
8
Satu-per-satu hampir pasti akan lebih lambat, pasti di Oracle atau PostgreSQL. Memecah operasi SQL menjadi banyak operasi yang lebih kecil adalah cara yang bagus untuk mendapatkan kinerja yang buruk.
David Aldridge
1
Saya menemukan bahwa 10.000 item dalam klausa In membutuhkan waktu sekitar 200 detik, tetapi 1000 membutuhkan 3 detik (atau 30 detik dalam perbandingan yang dinormalisasi). Ukuran memang penting.
ohmusama
12
delete from t
where id in (1, 4, 6, 7)
Carl Manaster
sumber