Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytanie, czy się nie zapętliłem?
elj
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.07.2005

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


Witam
Mam problem z wydajnością bazy. Szczególnie jeżeli chodzi o spinanie np 4 tablic.

  1. SELECT zm.GR_ID, st.P_TYP, zm.P_NR_FAB, us.U_NAZWA_S, om.OM_NAZWA_S
  2. FROM (przyrzad_zm AS zm), (przyrzad_st AS st),(uzytkownik AS us), (osrodek_met AS om)
  3. WHERE (zm.GR_ID)=(st.GR_ID) AND (zm.U_ID)=(us.U_ID) AND (us.OM_ID)=(om.OM_ID) AND zm.OM_ID != 9111497 AND zm.OM_ID = us.OM_ID
  4. ORDER BY (us.OM_ID) ASC LIMIT 0, 1000

Czy nie powstawiałem za dużo warunków? To mi trwa 7 min, a jak dam limit na 100 to też mam 7 min.
Serwer to P4 3Ghz 256MB RAM Debian.
pozdr. elj

Ten post edytował elj 21.09.2005, 07:42:19
Go to the top of the page
+Quote Post
orson
post
Post #2





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

zmień zapytanie na LEFT JOIN ... o wiele łatwiej się czyta ... daj wynik explain ... sprawdź czy masz klucze ... czy łączysz po kluczach ...

pozdrawiam
edit:
try this:
  1. SELECT
  2. zm.GR_ID, st.P_TYP, zm.P_NR_FAB, us.U_NAZWA_S, om.OM_NAZWA_S
  3. FROM `przyrzad_zm` AS zm
  4. LEFT JOIN `przyrzad_st` AS st ON (zm.GR_ID = st.GR_ID AND zm.OM_ID != 9111497)
  5. LEFT JOIN `uzytkownik` AS us ON (us.U_ID = zm.U_ID AND us.OM_ID = zm.OM_ID)
  6. LEFT JOIN `osrodek_met` AS om ON us.OM_ID = om.OM_ID
  7. ORDER BY us.OM_ID ASC LIMIT 1000 OFFSET 0;


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
TomASS
post
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%)
-----


Mnie się wcale nie czyta łatwiej jako LEFT JOIN tongue.gif

Poczytaj MySQL Optimization, a szczególnie rozdział "EXPLAIN Syntax (Get Information About a SELECT)".

Ten post edytował TomASS 21.09.2005, 09:46:12


--------------------
Go to the top of the page
+Quote Post
Shogo
post
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 27.08.2005

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


A ze sie tak niesmiale zapytam...
Myslales moze o zalozeniu indeksow na polach po ktorych laczysz. To powinno znacznie przyspieszyc joina winksmiley.jpg Sprawdz, powinno pomoc.


--------------------
"To injure an opponent is to injure yourself. To control aggression without inflicting injury is the Art of Peace."
Morihei Ueshiba - "The Art of Peace"
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: 21.08.2025 - 08:15