Comment supprimer d'une table où l'ID est dans une liste d'ID?


91

si j'ai une liste d'ID (1, 4, 6, 7) et une table de base de données dans laquelle je veux supprimer tous les enregistrements où l'ID est dans cette liste, quelle est la façon de le faire?

Réponses:


168

Votre question épelle presque le SQL pour ceci:

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

@jayarjo: Toute différence serait probablement assez négligeable, et je ne pense pas qu'il y ait une raison pour laquelle la suppression un par un serait de toute façon plus efficace.
Matti Virkkunen

C'est juste là que la performance peut toucher la commodité. Par exemple, j'ai déjà des fonctions pour le faire une par une en place. Mais s'il y avait une chance d'augmenter les performances, je pourrais écrire du code supplémentaire, sinon cela n'en vaudra probablement pas la peine.
jayarjo

8
Un par un serait presque certainement plus lent, certainement sur Oracle ou PostgreSQL. Décomposer les opérations SQL en plusieurs opérations plus petites est un excellent moyen d'obtenir de mauvaises performances.
David Aldridge

1
J'ai trouvé que 10 000 éléments de la clause In prenaient environ 200 secondes, mais 1000, 3 secondes (ou 30 secondes en comparaison normalisée). La taille importe.
ohmusama

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.