Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Długi czas zapytania w PHP - w Workbench nie
TomASS
post 15.11.2017, 23:17:46
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cześć,

mam zapytanie w SQL.
W skrypcie PHP wykonuje się 30-50sekund:
  1. gentime();
  2. $query = "xxxxx";
  3. $result = mysql_query($query);
  4. echo gentime();



Przy pomocy PHP MyAdmin (zdaje się, że inny serwer www) wykonuje się zdecydowanie szybciej 2-3s.
Przy pomocy MySQL Administrator lub MySQL Workbench działa też szybko

:/

Co może być nie tak z ustawieniami?

Dodatkowo zauważyłem, że jak dodam:
  1. mysql_query("SET NAMES utf8 COLLATE utf8_polish_ci");


to działa szybciej (zdecydowanie)

ale części wyników (zawierające polskie znaki) nie zwraca sad.gif


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 16.11.2017, 07:04:33
Post #2





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Daj zamiast echo gentime();
  1. die(gentime());

a później:
  1. file_put_contents("file.json", json_encode($results));

I powiedz wtedy jakie masz czasy wykonywania.

Bo wydaje mi się że po prostu masz problem z wyświetleniem wszystkich danych na stronie. Dlatego zaproponowałemm aby zapisać je do pliku json.
A potem spróbuj pobrać ten plik normalnie.

Go to the top of the page
+Quote Post
TomASS
post 16.11.2017, 08:20:34
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cześć, skąd mam wiedzieć jakie będą czasy skoro nie mam echo gentime()? smile.gif
Jak dam die(...) to też nie dojdzie do linii file_put_contents


--------------------
Go to the top of the page
+Quote Post
viking
post 16.11.2017, 08:30:28
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


gentime tez sobie możesz do pliku zapisać. Mogą być winne tez skrypty np. przypinanie zdarzenia do każdego elementu oddzielnie. Sposobem Tomplus zweryfikujesz co się dzieje.


--------------------
Go to the top of the page
+Quote Post
TomASS
post 16.11.2017, 14:05:17
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Czasy takie same - długie.

Nie wyświetlam wyników więc nie ma z tym problemu :/

Chyba coś z kodowaniem sad.gif


W polu mam kilka statusów "awizowany" oraz "wysyłka"
Na te pole mam indeks

gdy daję:
  1. SELECT * FROM tabela WHERE STATUS IN ('awizowany')


szybko
  1. SELECT * FROM tabela WHERE STATUS IN ('awizowany','wysyłka')

wolno

  1. SELECT * FROM tabela WHERE STATUS IN ('wysyłka')

wolno


gdy tylko polski znak pojawi się w zapytaniu - jest wolno sad.gif

Ten post edytował TomASS 16.11.2017, 14:21:48


--------------------
Go to the top of the page
+Quote Post
nospor
post 16.11.2017, 14:10:34
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Zrob EXPLAIN i bedziesz wiedzial co jest wolne


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

"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
TomASS
post 16.11.2017, 14:30:17
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat(nospor @ 16.11.2017, 15:10:34 ) *
Zrob EXPLAIN i bedziesz wiedzial co jest wolne


Cześć - zrobiłem ale nic nie odkryłem sad.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 16.11.2017, 14:38:45
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004





miales zrobic explain z poziomu php bo tam ci niby muli. Jesli efekt explain bedzie taki sam, to juz wiesz ze to nie wina zapytania z poziomu php


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

"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
TomASS
post 17.11.2017, 19:49:52
Post #9





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Daje to samo :/


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 17.11.2017, 22:12:28
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pokaż całe zapytanie na początek.
Go to the top of the page
+Quote Post
TomASS
post 19.11.2017, 13:58:38
Post #11





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


zapytanie:
  1. SELECT COUNT( * ) AS Ile, T.Real_mag_wbt, T.Numer, T.trading_zamowienia, T.nrFe, T.Odbiorca_Nr_SAP, T.Odbiorca_nazwa, T.NumerRefSecondary, T.Towar_mix, T.ID_grupa_transportowa, T.Typ_dostawy, T.NumerRef, T.HD, T.Multistop, T.Kierowca, T.Telefon, T.Pojazd, T.ID_przewoznik, T.ID, T.DateRealizacji, T.STATUS, Pr.Nazwa AS Przewoznik, RodzajCiezarowki, T.ZmianaAwizacji, Pr.NrSAP, TM.ID_podmiot, Dost.Nazwa AS Dostawca, Wbt.Nazwa AS Dostawca2
  2. FROM m_transporty AS T
  3. LEFT JOIN m_transporty_miejsca AS TM ON ( T.ID = TM.ID_transport )
  4. LEFT JOIN m_przewoznicy AS Pr ON ( Pr.ID = T.ID_przewoznik )
  5. LEFT JOIN m_wbt AS Wbt ON ( Wbt.Numer = T.Real_mag_wbt )
  6. LEFT JOIN s_dostawcy AS Dost ON ( Dost.ID = T.ID_dostawca )
  7. WHERE TM.ID_podmiot =103
  8. AND TM.Rodzaj = 'zaladunek'
  9. AND Miejsce = 'akt'
  10. AND T.ID_grupa_transportowa =4
  11. AND T.ImportFE = '1'
  12. AND 1
  13. AND T.STATUS
  14. IN (
  15. 'przekazane do Wysyłki', 'awizowany'
  16. )
  17. AND (
  18. ID_przewoznik IS NOT NULL
  19. OR T.Typ_dostawy = 'odbiorcy'
  20. )
  21. GROUP BY Numer, ID_przewoznik



Dodatkowo przeniosłem te tabele na inny serwer MySQL i zrobiłem porównanie - mega różnica sad.gif
Na "starym" mam czas 18sekund, na "nowym" <0,2s sad.gif

Oto Explain - czymś się różnią - tylko nie wiem czym sad.gif


--------------------
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 14:45