Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania SQL
tuptak6
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 11.06.2012

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


Witam

Po wielu próbach udało mi się napisać zapytanie które spełnia wszystkie moje warunki i wyświetla wszystkie potrzebne dane:

Przykład z wszystkimi warunkami i uzupełnionymi danymi

  1. SELECT m.*, mc.*, l.*,
  2.  
  3. (SELECT GROUP_CONCAT(cc.cat_name)
  4. FROM category_movies cc, movies_cats mm
  5. WHERE mm.movie = m.movie_id
  6. AND cc.cat_id = mm.cat ) AS moviecat_names,
  7.  
  8. (SELECT GROUP_CONCAT(cc.cat_id)
  9. FROM category_movies cc
  10. LEFT JOIN movies_cats mm ON ( cc.cat_id = mm.cat )
  11. WHERE mm.movie = m.movie_id ) AS moviecat_ids,
  12.  
  13. (SELECT GROUP_CONCAT(lang)
  14. FROM links_movies
  15. WHERE movie = m.movie_id
  16. GROUP BY lang) AS lang_ids
  17.  
  18. FROM movies m, movies_cats mc , links_movies l
  19. WHERE m.movie_id = mc.movie
  20. AND m.movie_year >= '1900'
  21. AND m.movie_year <= '2012'
  22. AND m.movie_rate >= '0'
  23. AND m.movie_rate <= '10'
  24. AND m.movie_id = l.movie
  25. AND l.lang IN (1)
  26. AND mc.cat IN (1)
  27. GROUP BY mc.movie
  28. ORDER BY m.movie_title ASC
  29. LIMIT 0,10


Wszystko było by ładnie pięknie ale strona się ładuje bardzo długo
Czy pomoże mi ktoś to ogarnąć ?

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





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

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


Miałem ostatni tak sam problem.
Zapytanie normalnie działało mi super, szybko, ale dodając jedną tabelę za dużo, nagle ładowanie strony przekroczyło nawet cierpliwość programisty.

Wystarczyło zastosować dla odpowiednich tabel JOIN LEFT,RIGHT lub OUTER i zapytanie się przyśpieszyło jeszcze lepiej. Więc teraz mam w jednym zapytaniu i subselecty, i joiny.
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: 3.10.2025 - 17:53