Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wielki JOIN czy 6*SELECT, a wydajność ?
jastu
post
Post #1





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

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


Witam,
stoję przed dylematem :

- napisać kwerendę która stworzy widok z 6 tabel i z tego widoku jednym zapytaniem pobierać dane ?
- napisać 6 mniejszych prostych selectów ?

Od czego może zależeć wybór rozwiazania i na co zwrócić uwagę ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
TomaySOFT
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 18.06.2002
Skąd: poznań

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


Niezależnie od tego, czy stworzysz widok, czy ileś tam podselectów wydajność będzie zależała od prawidłowego poindeksowania odpytywanych tabel. Mam doświadczenie z tabelami liczącymi sobie do kilkuset tysięcy rekordów, które zawierają bardziej lub mniej złożone dane (typu integer czy nawet varchar) i zawsze wychodzi na to, że bez indeksów zapytanie będzie trwało do x razy dłużej (przy x dążącym do nieskończoności) niż wtedy, gdy dobrze założysz indeksy...
Przykład:
Forum z tabelą userów (autoincrement, id_usera, login) i tabelą postów (autoincrement, id_usera, id_tematu, treść), a zapytanie będzie dotyczyło choćby ilości postów usera po jego loginie....
Jesli w tabeli postów i userów nie poindeksujesz pól z id_usera to... zapytanie będzie skrajnie niewydajne - z indeksami czas wykonania będzie... ludzki.
Jeśli chcesz wykorzystać joina lub 6 niezależnych zapytań, to różnica w czasie wykonania zaczyna być nieoceniona.
Musisz stosować zasadę: jeśli gdzieś zechcesz się o tabelę zapytać stosując klauzulę where wg jakiegoś pola, to musisz je poindeksować - nawet kosztem (podobno) ciut wolniejszych insertów do tych tabel - to się po prostu zwróci z nawiązką przy bardziej złożonych kwerendach.
A - jeśli jeszcze masz wątpliwości w tej kwestii - ew. przyszłe zapytania z joinem zadaj jako parametr do funkcji explain, a w wyniku dowiesz się, czy baza skorzysta z jakichkolwiek indeksów ("possible index"), czy też będzie po prostu przeszukiwała tabele rekord po rekordzie...

Pozdro
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: 27.12.2025 - 06:12