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?

Jawaban:


168

Pertanyaan Anda hampir mengeja SQL untuk ini:

DELETE FROM table WHERE id IN (1, 4, 6, 7)

@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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.