¿Cómo eliminar de una tabla donde el ID está en una lista de ID?

91

si tengo una lista de ID (1,4,6,7) y una tabla de base de datos donde quiero eliminar todos los registros donde la ID está en esta lista, ¿cuál es la forma de hacerlo?

leora
fuente

Respuestas:

168

Su pregunta casi deletrea el SQL para esto:

DELETE FROM table WHERE id IN (1, 4, 6, 7)
Matti Virkkunen
fuente
@jayarjo: Cualquier diferencia probablemente sería bastante insignificante, y no creo que haya ninguna razón por la que la eliminación uno por uno sea más eficiente de todos modos.
Matti Virkkunen
Es solo donde el rendimiento puede afectar la conveniencia. Por ejemplo, ya tengo funciones para hacerlo una por una. Pero si existiera la posibilidad de mejorar el rendimiento, podría escribir código adicional, de lo contrario probablemente no valga la pena.
jayarjo
8
Es casi seguro que uno por uno sería más lento, ciertamente en Oracle o PostgreSQL. Dividir las operaciones SQL en muchas operaciones más pequeñas es una excelente manera de obtener un mal rendimiento.
David Aldridge
1
Descubrí que 10,000 elementos en la cláusula In tomaron alrededor de 200 segundos, pero 1000 tomaron 3 segundos (o 30 segundos en comparación normalizada). El tamaño sí importa.
ohmusama
12
delete from t
where id in (1, 4, 6, 7)
Carl Manaster
fuente