Come eliminare da una tabella in cui l'ID è in un elenco di ID?


91

se ho un elenco di ID (1,4,6,7) e una tabella db in cui voglio eliminare tutti i record in cui l'ID è in questo elenco, qual è il modo per farlo?

Risposte:


168

La tua domanda quasi ortografa l'SQL per questo:

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

@jayarjo: Qualsiasi differenza sarebbe probabilmente abbastanza trascurabile, e non penso che ci sia alcun motivo per cui l'eliminazione una alla volta sarebbe comunque più efficiente.
Matti Virkkunen

È solo dove le prestazioni possono colpire la convenienza. Ad esempio, ho già le funzioni per farlo una per una sul posto. Ma se ci fosse la possibilità di aumentare le prestazioni potrei scrivere del codice aggiuntivo, altrimenti probabilmente non ne varrà la pena.
jayarjo

8
Uno per uno sarebbe quasi certamente più lento, sicuramente su Oracle o PostgreSQL. Suddividere le operazioni SQL in molte operazioni più piccole è un ottimo modo per ottenere cattive prestazioni.
David Aldridge

1
Ho scoperto che 10.000 elementi nella clausola In richiedevano circa 200 secondi, ma 1000 impiegavano 3 secondi (o 30 secondi nel confronto normalizzato). Le dimensioni contano.
ohmusama

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.