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 |
|
|
|
![]() |
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 |
|
|
|
jastu Wielki JOIN czy 6*SELECT 7.01.2008, 14:00:11
czachor Najlepiej chyba kilka selectów. Miałem podobny pro... 7.01.2008, 14:10:38
Cezar708 należy pamiętać, że stworzenie... 7.01.2008, 14:22:37
specialplan Z mojego doswiadczenia wynika, ze lepiej jest stwo... 5.02.2008, 18:34:19
Jarod @Cezar708: Ale czy przypadkiem nie jest tak, że od... 5.02.2008, 20:16:19 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 06:12 |