Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> optymalizacja zapytania z kilkoma podzapytaniami
php programmer
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Hej mam zapytanie, które wykonuje się dość długo
ze względu na zawarte 3 podzapytania,
W wygląda to mniej więcej tak:

  1. SELECT *,
  2. ( SELECT SUM(a) FROM tabela2 WHERE tabela2.pole = tabela1.pole) AS wynik1 ),
  3. ( SELECT COUNT(*) FROM tabela2 WHERE tabela2.pole = tabela1.pole AND ...) AS wynik2 ),
  4. ( SELECT COUNT(*) FROM tabela2 WHERE tabela2.pole = tabela1.pole AND ...) AS wynik3 ),
  5. FROM tabela1


Jak widać podzapytania operują na tej samej (podrzędnej) tabeli a na dodatek
łaczą się tabelą główną za pomocą tej samej pary kluczy tj
tabela2.pole = tabela1.pole

Czy w związku z tym, można było by inaczej sformułowac zapytanie
żeby się szybciej wykonywało niż teraz ?

Ten post edytował php programmer 19.06.2007, 12:36:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zbłąkany
post
Post #2


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


Ja bym utworzył dodatkowe tabele na liczniki i dla sum. Wtedy przy dodaniu rekordu do odpowiedniej tabeli inkrementujesz odpowiednie pole w tabeli licznik, za pomocą wyzwalacza oczywiście, tak samo z sumą. Potem wyciągnięcie tych danych nie stanowi problemu, jeśli masz liste pól, po których wyciągasz. Bo o ile funkcja sum() działa w miare przyzwoicie to funkcja count() ślamazarzy przy dużej liczbie rekordów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 10.10.2025 - 18:57