Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalne rozwiązanie
Forum PHP.pl > Forum > Bazy danych > MySQL
VGT
Problem mój nie polega na skonstruowaniu zapytania, lecz na wybraniu tego najbardziej optymalnego, gdyż w tej kwestii moja wiedz jest mizerna.
Więc do rzeczy:

Przyjmijmy, że mam listę filmów, pola: ID, tytul, gatunek.

Teraz na stronie chce wyświetlić ilość filmów z każdego gatunku w postaci wykresu słupkowego posortowane alfabetycznie. Aby móc to uzyskać, potrzebuję informacji, jaka wartosc ma największy ilościowo gatunek, aby móc dopasować długości słupków.

Rozważam trzy opcje:

1.
  1. SELECT count(*) AS ilosc, gatunek
  2. FROM films GROUP BY gatunek ORDER BY ilosc DESC LIMIT 1
  3.  
  4. SELECT count(*) AS ilosc, gatunek
  5. FROM films GROUP BY gatunek ORDER BY gatunek

Z pierwszego zapytania uzyskam maksymalną wartość, z drugiego już generuję html z odpowiednio proporcjonalnymi slupkami wykresu.

2.
  1. SELECT count(*) AS ilosc, gatunek
  2. FROM films GROUP BY gatunek ORDER BY ilosc DESC

Przy pobraniu pierwszego wiersza uzyskuje wartosc maksymalna, nastepnie caly wynik przepisuje do tabli w php i tam sortuje alfabetycznie i generuje wykres

3.
  1. SELECT count(*) AS ilosc, gatunek
  2. FROM films GROUP BY gatunek ORDER BY gatunek

Całość posortowaną alfabetycznie pobieram do zmiennych w php i z poziomu php wyszukuje wartosc maksymalna, nastepnie generuje wykres.

Piersze rozwiazanie dwa razy męczy sql'a, za to php praktycznie w locie generuje potem wykres.
Drugie i trzecie mogą dać całkiem sporo zmiennych dla php jezeli tabela bedzie szersza i/lub dłuższa, w zamian do sql'a łączy się tylko raz.

Jeszcze co do samej tabeli.. zazwyczaj bedzie to jedna, ale czasem wyniki pobieram z tabel laczonych (inner join)

Tak więc będę wdzięczny za jakiekolwiek sugestie. Co optymalniej jest męczyć php czy sql'a.
popbart
Ja jestem przy wykorzystywaniu sql'a w 100%.
Na słowo "optymalnie" można różnie patrzeć:
1)szybkość generowania strony
2) przejrzystość aplikacji i jej logika.
Jeżeli pragniesz uzyskać parę milisekund generowania kosztem godzin w aktualizowaniu aplikacji bądź jej "obczajeniu" po długiej przerwie, to proszę bardzo, ja tak nie lubie tongue.gif .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.