Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> query z kilku tabel - opytmalizacja
zombie
post
Post #1





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

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


Witam! Mam takie zapytanie do MySQL'a:
[sql:1:852d7fa5ee]SELECT tabela.id, tabela.imie, tabela.plec, tabela.ur, (YEAR(CURDATE())-YEAR(tabela.ur)) - (RIGHT(CURDATE(),5)<RIGHT(tabela.ur,5)) AS wiek, tabela.city, tabela.icq, tabela.gg, tabela.tlen, tabela.wpk, tabela.aqq, DATE_FORMAT(tabela.data,'%Y-%m-%d'), tabela.zdjecie, tabela.banned, ((tabela_pkt.humor*3) + tabela_pkt.sciana) AS punkty FROM tabela, tabela_pkt WHERE tabela.imie LIKE '".$_POST['l']."%' ORDER BY tabela.".$_GET['ord']." ".$aod.", tabela.imie ASC LIMIT ".(($_GET['pg'])*$HM).", ".$HM[/sql:1:852d7fa5ee]

... problem polega na tym, że takie zapytanie wykonuje się wręcz do kilkunastu sekund. Jak można zoptymalizaowć taki kod? Zalezy mi na tym, żeby pobierać dane z wielu tabel jednym zapytaniu, bo to upraszcza sortowanie... Czy jest to w ogóle możliwe, czy konieczna jest opcja, tak, jak na forum, np. "pokaż 10 najlepszych" i wtedy pobrać dane z tabela_pkt a w drugin query z tabela..?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dravo
post
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2003

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


tabele się łączą przez przecinek (Full Join) [ w klauzuli FROM ]
Według mnie jednak powinno w klauzuli WHERE związać sie obie tabele warunkami np. tab1.id = tab2.id, po prostu musza mieć jakieś wspólne pola, np. id.
Nie jestem ekspertem, ale na chlopski rozum, jeśli nie ma warunków łącznia się tabel, to łączą się całe, co zwalania zapytanie. Jeśli natomiast określimy fragmemnty tabel, które mają się łączyć cay proces może się przyspieszyć.
Jednak trzebabyłoby to sprawdzić.

UPDATE 1
Stosuj aliasy do nazwy tabel i pól [w tym przypadku zwłaszcza do tabel], np. tabela_pkt as pkt.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 12:16