Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySql] optymalizacja delete
Forum PHP.pl > Forum > Bazy danych > MySQL
konrad15
czy da sie zoptymalizowc takie zapytanie aby działalo szybciej

Kod
delete from tabela_1 where id=1 or id=2 or id=3 or id=4 or id=5 or id=22 or id=23 or id=2 or id=28 or id=2 itd do kilku dziesiat tysiecy numerow id
arzach
  1. DELETE FROM raport_1 WHERE id IN (1,2,3,4,5,6)
konrad15
a testowales moze jak to wplywa szybkosc ?
nospor
Cytat
kilku dziesiat tysiecy numerow
Nie przekroczysz przypadkiem dlugosci zapytania?
Skad masz te idki?
konrad15
a można przekroczyc dlugosc zapytania?, czy to nie zalezy czasem od ustawien serwera ?

id mam z bazy, robie to na zasadzie, ze jak cos juz mialem wczesniej w tabelce, to zamiast to aktualizowac zapisuje sobie id tych rekordow do tablicy i pozniej jednym zapytaniem to usuwam
a na koncu robie insert z nowym danymi
Crozin
1. Możesz przecież sam przetestować szybkość obu zapytań.
2. Tak, można przekroczyć długość zapytania, i tak jest to zależne od ustawień serwera.
3. Skoro i tak wybierasz te ID-ki z bazy pomyśl nad czymś w stylu
  1. DELETE FROM tbl_name WHERE id_col IN(SELECT id_col FROM another_tbl_name WHERE ...);
konrad15
bede mogl to przetestowac jutro, a dzisiaj juz jestem ciekaw jak to wplynie na szybkosc wykonania zapytania

//po edecji
po przetestowaniu moge powiedziec ze wynik jest bardzo zadowalajacy
zapytanie które wczesniej trwalo kilka minut wykonuje sie w dwie sekundy


a czy jest jakis sposb aby takie zapytanie rowniez zapisac uzywajac IN

Kod
delete from tabela_1 where (id=1 and id_p=5) or (id=2 and id_p=8) or itd
mmmmmmm
  1. DELETE FROM tabela_1 WHERE (id,id_p) IN (SELECT id, id_p FROM ...)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.