Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySql] optymalizacja delete
konrad15
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.07.2015

Ostrzeżenie: (0%)
-----


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


Ten post edytował konrad15 28.07.2015, 17:37:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
arzach
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

Ostrzeżenie: (0%)
-----


  1. DELETE FROM raport_1 WHERE id IN (1,2,3,4,5,6)


Ten post edytował arzach 28.07.2015, 17:38:31
Go to the top of the page
+Quote Post
konrad15
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.07.2015

Ostrzeżenie: (0%)
-----


a testowales moze jak to wplywa szybkosc ?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
kilku dziesiat tysiecy numerow
Nie przekroczysz przypadkiem dlugosci zapytania?
Skad masz te idki?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
konrad15
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 ...);
Go to the top of the page
+Quote Post
konrad15
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.07.2015

Ostrzeżenie: (0%)
-----


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


Ten post edytował konrad15 29.07.2015, 17:22:53
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. DELETE FROM tabela_1 WHERE (id,id_p) IN (SELECT id, id_p FROM ...)


Ten post edytował mmmmmmm 29.07.2015, 21:36:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 22:43