jeśli mam listę identyfikatorów (1, 4,6,7) i tabelę db, które chcę usunąć wszystkie rekordy, gdzie id jest na tej liście, jaki jest najszybszy sposób robienia tego ?delete gdzie id na liście
Odpowiedz
Twoje pytanie prawie czary SQL dla tego:
DELETE FROM table WHERE id IN (1, 4, 6, 7)
delete from t
where id in (1, 4, 6, 7)
poprawną odpowiedzią jest, że prędkość zależy od charakterystyki konkretnego wdrożenia/silnika, którego używasz, i że należy wystrzegać każdy szarlatan, który udaje, że jest w stanie udzielić jednoznacznej odpowiedzi na to pytanie.
Jeśli optymalizator systemu jest tak słaby, że nie widzi możliwości optymalizacji z "WHERE id IN (...)", to wykona skanowanie tabeli, które może być znacznie wolniejsze niż podanie 4 oddzielne polecenia usuwania.
Śmieci. Proszę przytoczyć jeden silnik bazy danych, w którym 4 oddzielne operacje byłyby szybsze. – Blorgbeard
Jeśli optymalizator w twoim systemie jest tak słaby ... powinieneś przełączyć się do innego silnika bazy danych –
- 1. Queryover gdzie id nie jest na liście
- 2. Hibernate 4.1.11 hql usuń zapytanie z gdzie na liście
- 3. DBFlow wybierz gdzie COLUMN na liście?
- 4. Scala zręczna kwerenda gdzie na liście
- 5. zookeeper: My id 4 nie ma na liście rówieśniczej
- 6. pobierz informacje z innej tabeli, gdzie id = id
- 7. Laravel Query Builder gdzie max id
- 8. dostać wiele elementów przez ID w liście z jquery
- 9. FindViewById gdzie ID jest ciągiem dynamicznym
- 10. SELECT w kassandra gdzie id! = Null
- 11. Bardzo powolne zapytanie DELETE
- 12. C++ "delete" jest wolne. Gdzie powinienem najpierw zajrzeć?
- 13. Pierwsze pozycję na liście
- 14. CHNP z zapytaniami "GDZIE ... NA"
- 15. znajdź indeks int na liście
- 16. Operator delete associativity
- 17. Zrozumienie deklaracji flatMap na liście
- 18. Python: kopiowanie listy na liście
- 19. Czekają na liście zadań
- 20. Przenieść pozycję na liście?
- 21. Obrazy na liście rozwijanej
- 22. foreach na liście [C#]
- 23. Błąd na liście rozwijanej
- 24. Zamów na liście
- 25. Max DateTime na liście
- 26. Znajdowanie wzorców na liście
- 27. Policz liczbę opcji na liście
- 28. Sprawdź, czy tabela ma DELETE na CASCADE
- 29. MySQL - Big DELETE na wielu tabelach
- 30. Wybierz wyróżniony przez dwie właściwości na liście
Czy ktoś porównał to do pojedynczego usuwania? – jayarjo
@jayarjo: Jakakolwiek różnica byłaby prawdopodobnie znikoma i nie sądzę, aby istniał jakikolwiek powód, by jeden po drugim usunąć i tak byłby bardziej wydajny. –
To miejsce, w którym wydajność może trafić wygodnie. Na przykład mam już funkcje do robienia tego jeden po drugim na miejscu. Ale gdyby istniała szansa na zwiększenie wydajności, mógłbym napisać dodatkowy kod, inaczej prawdopodobnie nie będzie tego wart. – jayarjo