Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Co jest bardziej wydajnym i "lepszym" rozwiązaniem
awakening
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 12.01.2008
Skąd: Warszawa

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


Witam,

Natknąłem się na problem poniekąd natury filozoficznej. Muszę zrealizować dość skomplikowaną operację na danych z bazy i widzę dwie możliwości rozwiązania zadania:

Rozwiązanie 1. Pobrać wszystkie dane na raz, jednym zapytaniem i potem "obrobić" je w kodzie. Dokładnie chodzi o zsumowanie wartości produktów według grup do których należą, czyli pobieram wszystkie produkty jednym zapytaniem, następnie iteruję po nich i sumuję wartości przypisując je do tablicy z grupami produktów.

Rozwiązanie 2. Stworzyć dwa oddzielne widoki w bazie danych (tak mi wychodzi ze struktury bazy, każdy z nich będzie miał ok. dwa JOIN'y) a następnie w kodzie przy zapytaniu połączyć kolejnym JOIN'em te dwa widoki. To rozwiązanie nie wymaga iterowania po tablicy w kodzie, ani wykonywania żadnych innych "brzydkich" operacji na danych. To rozwiązanie podoba mi się bardziej ze względu na czystość w kodzie i łatwość utrzymania kodu, ale mam małe obawy co do wydajności tego podejścia.


Czy istnieją jakieś "best practices" w takich przypadkach? Lepiej dane "obrabiać" po stronie bazy danych, czy w kodzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Twoje pierwsze rozwiązanie:
A) jest "brzydkie"
B) wywali się przy większej ilości rekordów z powodu PHP'owego memory_limit

Co do drugiego rozwiązania to widoki w MySQL są złem, chociażby ze względu na przenośność (są problemy z uprawnieniami i użytkownikami). Poza tym jeśli możesz to zrobić za pomocą widoku, to możesz też zwykłym zapytaniem. Efekt jest ten sam - i tak MySQL musi przemielić wszystkie dane.

Więc ja bym chyba był za 3. opcją - jedno bardziej rozbudowane zapytanie.

Ten post edytował sowiq 28.08.2014, 15:55:02
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: 24.12.2025 - 10:40